考虑以下代码:为什么此作业不需要显式演员?
byte b=1;
long l=1000;
b += l;
我希望最后的语句需要显式造型,因为, b+=l
作为b = b+l
和 (b+l)
部分给出了一个整数评估。 整数不能分配给没有明确转换的字节?
考虑以下代码:为什么此作业不需要显式演员?
byte b=1;
long l=1000;
b += l;
我希望最后的语句需要显式造型,因为, b+=l
作为b = b+l
和 (b+l)
部分给出了一个整数评估。 整数不能分配给没有明确转换的字节?
好下手,b+l
给人以long
,不是int
......
...但复合赋值运算符有其他行为。按照JLS section 15.26.2:
形式E1 OP的化合物赋值表达式= E2相当于E1 =(T)((E1)OP(E2)),其中T是E1的类型,不同的是E1只评估一次。
注意剧组为T
。
的可能重复您可以观察手动写入b = b + l时的差异;那么你会看到你想要的错误:-) –
对不起,b + l给了很长时间。我需要更多地阅读oracle文档。谢谢。 – PrashanD
[Java + = operator](http://stackoverflow.com/questions/8710619/java-operator) – assylias