·赋值运算符
A:基本赋值运算符:
B:扩展的赋值运算符:+=, -=, /=, %=
另外几个功能相同
C:面试题:
1----short s = 1; s = s + 1;
2----short s = 1; s += 1;
这两行代码有没有问题,如果有,哪里有问题?
1)有问题,具体解释如下:
2)正确
D:面试题:
byte b1 = 3, b2 = 4, b;
b = b1 + b2;
b = 3 + 4;
哪句编译失败?为什么?
1为变量相加:先看数据类型,看是否有默认转换,有的话,必须强制类型转换
2为常量相加:先相加,然后得到结果看其是否在byte(-128~127)范围内,在的话就不会报错
E:面试题:
byte b = 130;
有没有问题?如果我想让赋值正确,可以怎么做?结果是多少?
1)有问题:
2)正确写法:
3)计算输出结果:
∵计算机底层对数据进行计算都是通过补码计算的
∴首先计算出130的二进制原码:
00000000 00000000 00000000 10000010
由于最高位符号位为0,为正数,因此正数原码、反码、补相同码
将130强制转换为byte类型,(int类型4个字节,byte类型1个字节),因此byte类型的130补码为:
10000010(最高位符号位为1,所以为负)
已知补码求反码(负数的补码为反码+1),所以反码为:
补码:1 0000010
-1
反码:1 0000001
已知反码求原码(负数的反码是由原码对位取反得到的),所以原码为:
原码:1 1111110
转换为十进制为:- (64 + 32 + 16 + 8 + 4 +2) = -126
所以输出结果为-126,下面验证: