我有以下Java代码的问题

时间:2010-03-21 05:49:39

标签: java

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;那么它就会编译并运行。

请解释为什么会这样。

2 个答案:

答案 0 :(得分:13)

b+=1在Java中自动输入类型; b=b+1没有。

答案 1 :(得分:1)

这就是复合赋值运算符(如+ =, - =等)优于赋值运算符的优点,在这种运算符中,您必须显式地转换为右侧的类型,但如果使用复合赋值运算符,则隐式执行它您。 正如你的情况一样。