为什么我没有收到错误?

时间:2017-03-28 12:42:17

标签: java

在Java中,如果我执行以下操作,则会出现错误

byte b = 50;
b = b * 2; // Error! Cannot assign an int to a byte!

好的,我理解为什么会收到这个错误。 但是现在如果我b*=2我没有收到任何错误。为什么呢?

2 个答案:

答案 0 :(得分:1)

因为当您b *= 2;实际执行此操作时*=会将int投放到byte

答案 1 :(得分:0)

原因很简单,因为缩小=和* =。

的转换有不同的规则

有关扩大的详细信息,请参阅here;然后你去here了解那些* =操作的区别。

你,见

b *= 2 

作为

b = (byte) ( (b) * 2 ) 

并且缩小转换在这里不起作用。