我对以下Java代码有问题

我对以下Java代码有问题,java,Java,我正在使用此代码,但我有问题: 我不明白为什么b=b+l未编译,但如果我编写b+=l然后编译并运行 请解释为什么会发生这种情况。b+=1在Java中自动执行类型转换b=b+1则不然。这就是复合赋值运算符(如+=、-=)相对于赋值运算符的优势所在,在这种情况下,您必须显式转换为右侧的类型,但如果使用复合赋值运算符,它会隐式地为您执行此操作。 正如您的情况一样。另请参见@Sanjeev。如果您的答案对您有效/正确回答了您的问题,您可以通过单击投票计数器下方的勾号来接受这些答案。 public cla

我正在使用此代码,但我有问题: 我不明白为什么
b=b+l未编译,但如果我编写
b+=l然后编译并运行


请解释为什么会发生这种情况。

b+=1
在Java中自动执行类型转换
b=b+1
则不然。

这就是复合赋值运算符(如+=、-=)相对于赋值运算符的优势所在,在这种情况下,您必须显式转换为右侧的类型,但如果使用复合赋值运算符,它会隐式地为您执行此操作。
正如您的情况一样。

另请参见@Sanjeev。如果您的答案对您有效/正确回答了您的问题,您可以通过单击投票计数器下方的勾号来接受这些答案。
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);  
    }
}