第02章_变量与运算符拓展练习

文章目录

  • 第02章_变量与运算符拓展练习
      • 1、辨别标识符
      • 2、数据类型转换简答
      • 3、判断如下代码的运行结果(难)
      • 4、判断如下程序的运行结果
      • 5、判断如下程序的运行结果
      • 6、Java的基本数据类型有哪些?String是基本数据类型吗?
      • 7、语法判断
      • 8、char型变量中是否可以存储一个汉字?
      • 9、说明基本数据类型变量之间自动类型提升的运算规则
      • 10、说明基本数据类型变量之间强制类型转换的使用规则和可能的问题
      • 11、按步骤编写代码,效果如图
      • 12、按步骤编写代码,效果如图
      • 13、按步骤编写代码,效果如图
      • 14、桃园结义获取老大的年龄
      • 15、将整数60手动转换为十六进制(难)
      • 16、判断闰年

第02章_变量与运算符拓展练习


1、辨别标识符

  • 是否符合规则,即编译是否报错?
  • 是否符合规范?即是否够优雅

(1)以下标识符作为类名是否合适

Test,a,test,ttt,class, public, int,尚硅谷,exercise8,Exercise8
编译报错:
	class, public, int,
编译不报错但不好:
	a,test,ttt,尚硅谷,exercise8,
合适的类名有:
	TestExercise8

(2)以下标识符作为变量名是否合适

miles, Test, a++, --a, 4#R, $4, #44, apps, class, public, int, x, y, radius,尚硅谷,a1,1b,b0a
编译报错:
	class, public, int,a++, --a, 4#R, #44,1b
编译不报错但不好:
    Test,a1,b0a,尚硅谷,$4
相对合适的变量名有:
   miles, radius,apps, x, y

2、数据类型转换简答

//1、练习题:判断如下代码是否编译通过,如果能,结果是多少?
short s1 = 120;
short s2 = 8;
short s3 = s1 + s2;

//编译不通过,因为s1+s2自动提示为int类型

//2、练习题:判断如下代码是否编译通过,如果能,结果是多少?
short b1 = 120;
short b2 = 8;
byte b3 = (byte)(b1 + b2);

//编译通过,结果是-128

//3、练习题:判断如下代码是否编译通过,如果能,结果是多少?
char c1 = '0';
char c2 = '1';
char c3 = c1 + c2;

//编译不通过,因为c1+c2自动提示为int类型

//4、练习题:判断如下代码是否编译通过,如果能,结果是多少?
char c1 = '0';
char c2 = '1';
System.out.println(c1 + c2);

//编译通过,println方法可以接收各种数据类型的值,进行输出,结果是97

//5、练习题:判断如下代码是否编译通过,如果能,结果是多少?
int i = 4;
long j = 120;  //自动类型提升
double d = 34; //自动类型提升
float f = 1.2;

System.out.println(i + j + d + f);

//编译不通过,因为1.2默认是double类型,不能直接赋值给float的f,要么在1.2加F,要么加(float)1.2

//6、练习题:判断如下代码是否编译通过,如果能,结果是多少?
int a = 1;
int b = 2;
double result = a/b;
System.out.println(result);

//编译通过,结果是0.0,先计算a/b结果是0,然后提升double,0.0

3、判断如下代码的运行结果(难)

public class Exer3{
	public static void main(String[] args){
		int i = 1;
		int j = i++; 1  2  3  
		int k = i++ * ++j + ++i * j++;
		
		System.out.println("i = " + i);
		System.out.println("j = " + j);
		System.out.println("k = " + k);
	}
}
public class Exer3{
	public static void main(String[] args){
		int i = 1;
		int j = i++;
		/*
		(1)先取i的值,放到操作数栈中
		(2)i自增,i=2
		(3)用操作数栈中1赋值给j

			j=1,i=2
		*/
		
		int k = i++ * ++j + ++i * j++;
		/*
		(1)i++ 
		先取i的值2,放到操作数栈中,紧接着i自增为3
		(2)++j
		j先自增为2,然后取j的值2放到操作数栈中,
		(3)算* ,取出操作数栈中2 和 2 相乘结果是4
		这个4重新放回操作数栈
		
		(4)++i
		i先自增为4,然后取i的值4放到操作数栈中,
		(5)j++
		先取j的值2到操作数栈中,紧接着j自增为3
		(6)算*,取出操作数栈中4 和 2 相乘结果是8
		这个8重新放回操作数栈
		
		(7)算+
		取出操作数栈中4 和 8 相加结果是12
		
		*/
		
		System.out.println("i = " + i);//4
		System.out.println("j = " + j);//3
		System.out.println("k = " + k);//12
	}
}

4、判断如下程序的运行结果

//如下代码的计算结果是:
int i = 1;
i *= 0.2;  
i++;
System.out.println("i=" + i);//i=1

5、判断如下程序的运行结果

//如下代码的运算结果是:
int i = 2;
i *= i++;

int j = 2;
j *= j+1; 

int k = 2;
k *= ++k;

System.out.println("i=" + i);//i=4
System.out.println("j=" + j);//i=6
System.out.println("k=" + k);//i=6

6、Java的基本数据类型有哪些?String是基本数据类型吗?

Java的基本数据类型有:byte,short,int,long,float,double,char,boolean

String不是基本数据类型

7、语法判断

float f=3.4;是否正确,表达式15/2*2的值是多少

float f=3.4; //错误,因为3.4默认是double类型
System.out.println(15/2*2); //14,因为15/2结果是7

8、char型变量中是否可以存储一个汉字?

可以

9、说明基本数据类型变量之间自动类型提升的运算规则

> 容量小的类型自动转换为容量大的数据类型
> 有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。
> byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型。 
> boolean类型不能与其它数据类型运算。

10、说明基本数据类型变量之间强制类型转换的使用规则和可能的问题

> 强制类型转换:自动类型转换的逆运算,需要使用强制类型转换符()

> 注意的问题:可能会造成精度的损失

11、按步骤编写代码,效果如图

在这里插入图片描述

  • 开发提示:四则运算的符号

    : +: -: *: /
    
  • 编写步骤:

    1. 定义类 Exercise11
    2. 定义 main方法
    3. 定义2个int类型变量x、y,x赋值为100,y赋值为200
    4. 定义新变量add,保存变量x,y的和并打印到控制台
    5. 定义新变量sub,保存变量x,y的差并打印到控制台
    6. 定义新变量mul,保存变量x,y的积并打印到控制台
    7. 定义新变量div,保存变量x,y的商并打印到控制台

    class Exercise11{
    publie static void main(String[]args){
    int x,y;
    x = 100;
    y = 200;
    add = x + y;
    sob = x - y;
    nul = x * y;
    div = x / y;

    }
    }

public class Exercise11 {

	public static void main(String[] args) {
		int x = 100;
        int y = 200;
        int add = x + y;
        int sub = x - y;
        int mul = x * y;
        int div = x / y;
        System.out.println("x,y的和为:" + add);
        System.out.println("x,y的差为:" + sub);
        System.out.println("x,y的积为:" + mul);
        System.out.println("x,y的商为:" + div);
	}

}

12、按步骤编写代码,效果如图

在这里插入图片描述

  • 编写步骤:
  1. 定义类 Exercise12
  2. 定义 main方法
  3. 定义两个byte类型变量b1,b2,并分别赋值为10和20.
  4. 定义变量b3,保存b1和b2的和,并输出.
  5. 定义两个short类型变量s1,s2,并分别赋值为1000和2000.
  6. 定义short类型变量s3,保存s1和s2的和,并输出.
  7. 定义一个char类型变量ch1赋值为’a’,一个int类型变量i1赋值为30.
  8. 定义变量ch3,保存c1和i1的差,并输出.
public class Exercise12 {
	public static void main(String[] args) {
		byte b1 = 10;
		byte b2 = 20;
		byte b3 = (byte)(b1 + b2);
		System.out.println("byte类型的b1和b2的和为:");
		System.out.println(b3);
		
		short s1 = 1000;
		short s2 = 2000;
		short s3 = (short)(s1 + s2);
		System.out.println("short类型的s1和s2的和为:");
		System.out.println(s3);
		
		char c1 = 'a';
		int i1 = 30;
		int ch3 = c1 - i1;
		System.out.println("char类型的ch1和int类型的i1的差:");
		System.out.println(ch3);
	}
}

13、按步骤编写代码,效果如图

在这里插入图片描述

  • 编写步骤:
    1. 定义类 Exercise13
    2. 定义 main方法
    3. 定义两个int类型变量a1和a2,分别赋值10,11,判断变量是否为偶数,拼接输出结果
    4. 定义两个int类型变量a3和a4,分别赋值12,13,判断变量是否为奇数,拼接输出结果
public class Exercise13 {
	public static void main(String[] args) {
		int a1 = 10;
		int a2 = 11;
		int a3 = 12;
		int a4 = 13;
		System.out.println("10是偶数?" + (a1 % 2 == 0));
		System.out.println("11是偶数?" + (a2 % 2 == 0));
		System.out.println("12是奇数?" + (a3 % 2 != 0));
		System.out.println("13是奇数?" + (a4 % 2 != 0));
	}
}

14、桃园结义获取老大的年龄

历史中,刘关张桃园三结义大家非常熟悉了。现有三个童鞋,年龄如下:

刘小备:23岁

关小羽:22岁

张小飞:21岁

获取三人中最大的年龄

public class Exercise14 {
    public static void main(String[] args) {
        int liuXiaoBei = 23;
        int guanXiaoYu = 22;
        int zhangXiaoFei = 21;

        int tempMax = (liuXiaoBei > guanXiaoYu)? liuXiaoBei : guanXiaoYu;
        int maxAge = (tempMax > zhangXiaoFei)? tempMax : zhangXiaoFei;
        System.out.println("三人中最大的年龄是:" + maxAge);
    }
}

15、将整数60手动转换为十六进制(难)

public class Exercise15 {
    public static void main(String[] args) {

        int num = 60;
        int j1 = num & 15;
        String s1 = (j1 > 9) ? (char) (j1 - 10 + 'A') + "" : j1 + "";//取出了最低的4位对应的字符

        int j2 = (num >>> 4) & 15;
        String s2 = (j2 > 9) ? (char) (j2 - 10 + 'A') + "" : j2 + "";//取出了次最低的4位对应的字符

        System.out.println(s2 + s1);

    }
}

16、判断闰年

给定一个年份,判断是否是闰年。输出"xxx年(是/不是)闰年"。

闰年的判断标准是:
1)可以被4整除,但不可被100整除
 2)可以被400整除
public class Exercise16 {
    public static void main(String[] args) {
        int year = 2018;
        boolean isLeapYear = (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
        System.out.println(year + (isLeapYear ? "是闰年" : "不是闰年"));
    }
}
给定一个年份,判断是否是闰年。输出"xxx年(是/不是)闰年"。

闰年的判断标准是:
1)可以被4整除,但不可被100整除
 2)可以被400整除
public class Exercise16 {
    public static void main(String[] args) {
        int year = 2018;
        boolean isLeapYear = (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
        System.out.println(year + (isLeapYear ? "是闰年" : "不是闰年"));
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/321420.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LeeCode前端算法基础100题(20)找出字符串中第一个匹配项的下标

一、问题详情: 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。 示例 1: 输入:haystack = "sadbutsad", needle = "s…

【现代密码学】笔记 补充7-- CCA安全与认证加密《introduction to modern cryphtography》

【现代密码学】笔记7-- CCA安全与认证加密《introduction to modern cryphtography》 写在最前面7 CCA安全与认证加密 写在最前面 主要在 哈工大密码学课程 张宇老师课件 的基础上学习记录笔记。 内容补充:骆婷老师的PPT 《introduction to modern cryphtography》…

鸿蒙应用开发学习:让page页面强制横屏

一、学习做了个适合横屏的页面但进入页面后是竖屏显示的 前几天在B站上跟着 黑马程序员的 HarmonyOS4.0开发应用教学视频学习了显式动画(animateTo)和属性动画(animation)功能,并参照教学视频的内容做了个小鱼动画。…

助力工业园区作业违规行为检测预警,基于YOLOv7【tiny/l/x】不同系列参数模型开发构建工业园区场景下作业人员违规行为检测识别系统

在很多工业园区生产作业场景下保障合规合法进行作业生产操作,对于保护工人生命安全降低安全隐患有着非常重要的作用,但是往往在实际的作业生产中,因为一个安全观念的淡薄或者是粗心大意,对于纪律约束等意思薄弱,导致在…

绝地求生:【PC】第27赛季第2轮更新公告

各位玩家大家好!欢迎收看本期闲游盒更新公告。 正式服维护时间 ※ 下列时间可能会根据维护情况而发生变化。 1月10日上午8:00 – 下午4:30 地图轮换 ※ 地图轮换将于每周三上午10点进行。 ※ 在随机选择地图的地区中,第1周可选择荣都地图&#xff0c…

UML-通信图和交互概览图(通信图和顺序图的区别与联系)

UML-通信图和交互概览图(通信图和顺序图的区别与联系) 一、通信图简介1.消息2.链接 二、通信图和[顺序图](https://blog.csdn.net/weixin_65032328/article/details/135587782)的联系与区别三、交互概览图四、顺序图转化为通信图练习 一、通信图简介 通…

CSC8021_computer network_The Transport Layer

Role of the transport layer • The transport layer is responsible for providing a reliable end-to-end connection between two application processes in a network • Abstracting away the physical subnet • Does not involve intermediate nodes • Takes a netwo…

2024--Django平台开发-Redis集群(十一)

内容回顾 主从复制。 哨兵:实例启动了,哨兵节点没启动,Python通过redis-py连接报错。一定要确保实例节点和哨兵节点都启动了。 搭建集群用的是虚拟机的多台centos服务器,你在跟着学习的时候,一定要全部都是虚拟机&am…

MySQL面试题2

文章目录 面试题 (9-15) 面试题 (9-15) 09)查询学过「张三」老师授课的同学的信息 SELECT s.*,c.cname,t.tname FROM t_mysql_teacher t,t_mysql_student s,t_mysql_course c,t_mysql_score sc WHERE t.tidc.tid and c.cidsc.cid and sc.sids.sid and tname ‘张…

EI级 | Matlab实现VMD-TCN-BiLSTM变分模态分解结合时间卷积双向长短期记忆神经网络多变量光伏功率时间序列预测

EI级 | Matlab实现VMD-TCN-BiLSTM变分模态分解结合时间卷积双向长短期记忆神经网络多变量光伏功率时间序列预测 目录 EI级 | Matlab实现VMD-TCN-BiLSTM变分模态分解结合时间卷积双向长短期记忆神经网络多变量光伏功率时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基…

QLExpress和Groovy对比

原理 Groovy groovy基于JVM运行。 编译时:将源文件编译成class文件后,用java的classLoader加载;运行时:直接用groovy classLoader加载 QLExpress QLExpress将文本解析成AST,用java对象表达后执行。 特点 Groo…

如何用LLM和自有知识库搭建智能agent?

用LangChain建立知识库,文末中也推荐其他方案。 项目源码:ChatPDF实现 LangChain Indexes使用 对加载的内容进行索引,在indexes中提供了一些功能: Document Loaders,加载文档Text Splitters,文档切分V…

android.os.NetworkOnMainThreadException

问题 android.os.NetworkOnMainThreadException详细问题 核心代码如下: import android.os.Bundle;import androidx.appcompat.app.AppCompatActivity;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ja…

【Java】IDEA中的JFormDesigner使用教程

目录 1 安装 JFormDesigner 插件2 JFormDesigner 使用教程2.1 新建JFormDesigner Form时的选项2.2 JFormDesigner Form界面布局2.3 JFormDesigner 常用组件 JFormDesigner 是一款用于设计和创建图形用户界面(GUI)的插件,它允许开发者使用可视…

鸿蒙Harmony-相对布局(RelativeContainer)详解

成年人的世界,从来没有容易二字,想要什么,就得凭自己的努力去拿,遇到事情就得自己生生的硬抗,希望你即使再辛苦,但还是会选择这滚烫的人生,加油陌生的朋友们 目录 一,定义 二&#x…

瑞_Java开发手册_(一)编程规约

文章目录 编程规约的意义(一)命名风格(二)常量定义(三)代码格式(四)OOP 规约(五)日期时间(六)集合处理(七)并发…

网络分流规则

现在的网络是越来越复杂。 有必要进行分流。 有一些geosite.dat是已经整理好的,包含许多的网站的分类: 分流规则: route规则 主要是: {"type": "field","outboundTag": "direct","domain&quo…

Material Design 进阶(十一)——Chip,ChipGroup,ChipDrawable使用

流式布局标签发展历程 第一阶段:实现这种界面的时候,基本都是自定义一个控件,然后在Java代码中动态的 添加一个个的TextView,还需要计算布局宽度/高度,进行换行等等处理,比较复杂;第二阶段:使用…

cad二次开发autolisp(一)

文章目录 一、概述1.1 简介1.2 打开编辑器1.3 调试页面 二、数据类型三、函数3.1 用户函数 四、语句4.1 常规语句4.2 流程控制语句 五、图元操作5.1 定义5.2 图元选择5.3 图元属性列表 一、概述 1.1 简介 简介:cad 二次开发语言,后缀名*.lsp适用于编写…

恒源云GPU服务器使用Linux图形化界面

编程如画,我是panda! 干货满满,不要走开~ 前言 前一节分享了如何在GPU云服务器上创建实例并运行YOLOV5项目,但是使用命令行的方式容易劝退很多小白,并且有些环境配置是需要图形化界面的,所以这一节就教大家…