目录
1.赋值操作符
【笔试题】下列代码哪个能够通过编译?哪个会报错?
1)short s = 10;
s = s + 1;
2)short s = 10;
s += 1;
第二个能通过编译
1是int类型,而s是short类型,进行加法运算,系统底层会自动给我们提升为int类型,而左边的s是short类型,不能进行赋值
而运算赋值符会在运算的时候,自动兼容数据类型
2.算数操作符
【笔试题】写出下列代码输出的结果:
int a = 10;
float f = 12.5f;
System.out.println("计算结果为:" + a+f);
计算结果为:1012.5
println()的参数列表中,有三个操作数需要使用“+”运算进行计算
而“+”不管是做字符串的拼接,还是算数运算,都没有优先级之分,都是从左往右依次计算的
3.位移操作符
>> 有符号右移/算数右移
规则:低位丢弃,高位补符号位。
练习:写出下列代码运行的结果:
System.out.println(10 >> 2);
System.out.println(-10 >> 2);
10>>2
10的二进制原码:00001010
右移2位:00000010 =2
-10>>2
注:负数进行位操作都是按补码进行的
-10的补码:11110110
右移2位: 11111101
-1取反码:11111100
取反取补码:10000011 =-3
>>> 无符号右移/逻辑右移
规则:低位丢弃,高位直接补零。
练习:写出下列代码运行的结果:
System.out.println(-10 >>> 2);