public class b {
public static void main(String[] args) {
byte b = 1;
long l = 127;
// b = b + l; // 1 if I try this then it does not compile
b += l; // 2 if I try this then it does compile
System.out.println(b);
}
}
我正在使用此代码,但我遇到了问题:
我不明白为什么b=b+l;
没有编译但是如果我写b+=l;
那么它就会编译并运行。
请解释为什么会这样。
答案 0 :(得分:13)
b+=1
在Java中自动输入类型; b=b+1
没有。
答案 1 :(得分:1)
这就是复合赋值运算符(如+ =, - =等)优于赋值运算符的优点,在这种运算符中,您必须显式地转换为右侧的类型,但如果使用复合赋值运算符,则隐式执行它您。 正如你的情况一样。