Java中类型转化问题

来源:互联网 发布:租人软件app 编辑:程序博客网 时间:2024/05/19 11:45

看下面这段代码,是不是有什么问题:

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相同,也是进行了强转。

0 0