Java中类型转化问题
看下面这段代码,是不是有什么问题:
byte b1 = 1;
byte b2 = 2;
byte b3 = b1 + b2;
这段代码无法通过编译,因为在运算的时候byte、short、char等都会转化成int,所以要加强转将b1+b2转化成byte型。
下面一段代码:
byte b1 = 100 + 27;
byte b2 = 100 + 28;
这段代码中第二句无法通过编译,因为128超过了byte的取值范围,这是因为java编译器有常量优化机制,在编译的时候就会判断是否超过取值范围。
再看下面一段代码:
byte b = 10;
b++;
b = b + 1;
这一段代码中第三句错误是没有问题的,但第二句为什么没问题呢?虽然第二三句等效,但b++是底层进行了强转,即b = (byte) (b + 1)。这与 b += 1相同,也是进行了强转。

浙公网安备 33010602011771号