【JavaSE学习笔记】赋值运算符

来源:互联网 发布:java导出txt文件 编辑:程序博客网 时间:2024/06/05 06:19

·赋值运算符

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,下面验证: