第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,
合适的类名有:Test,Exercise8
(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赋值给jj=1,i=2*/int k = i++ * ++j + ++i * j++;/*(1)i++ 先取i的值2,放到操作数栈中,紧接着i自增为3(2)++jj先自增为2,然后取j的值2放到操作数栈中,(3)算* ,取出操作数栈中2 和 2 相乘结果是4这个4重新放回操作数栈(4)++ii先自增为4,然后取i的值4放到操作数栈中,(5)j++先取j的值2到操作数栈中,紧接着j自增为3(6)算*,取出操作数栈中4 和 2 相乘结果是8这个8重新放回操作数栈(7)算+取出操作数栈中4 和 8 相加结果是12*/System.out.println("i = " + i);//4System.out.println("j = " + j);//3System.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,booleanString不是基本数据类型
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、按步骤编写代码,效果如图

-
开发提示:四则运算的符号
加: + 减: - 乘: * 除: / -
编写步骤:
- 定义类 Exercise11
- 定义 main方法
- 定义2个int类型变量x、y,x赋值为100,y赋值为200
- 定义新变量add,保存变量x,y的和并打印到控制台
- 定义新变量sub,保存变量x,y的差并打印到控制台
- 定义新变量mul,保存变量x,y的积并打印到控制台
- 定义新变量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、按步骤编写代码,效果如图

- 编写步骤:
- 定义类 Exercise12
- 定义 main方法
- 定义两个byte类型变量b1,b2,并分别赋值为10和20.
- 定义变量b3,保存b1和b2的和,并输出.
- 定义两个short类型变量s1,s2,并分别赋值为1000和2000.
- 定义short类型变量s3,保存s1和s2的和,并输出.
- 定义一个char类型变量ch1赋值为’a’,一个int类型变量i1赋值为30.
- 定义变量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、按步骤编写代码,效果如图

- 编写步骤:
- 定义类 Exercise13
- 定义 main方法
- 定义两个int类型变量a1和a2,分别赋值10,11,判断变量是否为偶数,拼接输出结果
- 定义两个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 ? "是闰年" : "不是闰年"));}
}