【发布时间】:2012-12-18 07:48:44
【问题描述】:
可能重复:
Java += operator
我们可以在b+=8 或b=b+8 的任何变量中添加一个值,两者都会返回将8 添加到变量b 中的值。我在面试中得到了这个问题,它是
byte b=7;
b=b+8; //compile error
会输出什么,我勾选了compile time error,因为添加byte 和int 将是int(我相信)并且因为我们试图将int 值存储到byte。但是,当我自己尝试下面的代码时
byte b=7;
b+=8; //OK
然后,上面的代码编译并运行完美,没有任何错误,并返回15。现在,我的问题是为什么以及如何?我的意思是,为什么它不需要显式转换?
【问题讨论】:
-
可能是,因为我没有找到解决方案。这就是我问的原因。
-
b=(byte) (b+8)==b+=8!=b=b+8 -
就像@alexvetter 所说,它确实进行了隐式转换。 stackoverflow.com/questions/8710619/java-operator 对此进行了讨论。
-
是的,但这是我问题的一部分,另一个问题是如何?我的意思是如何,它执行。但是,尽管如此,我会进一步探索它,谢谢大家。!!