У меня проблема со следующим кодом Java - PullRequest
3 голосов
/ 21 марта 2010
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 ]

13 голосов
/ 21 марта 2010

b+=1 делает приведение типов автоматически в Java; b=b+1 нет.

1 голос
/ 21 марта 2010

В этом заключается преимущество составных операторов присваивания, таких как + =, - = и т. Д., Перед операторами присваивания, когда вам необходимо явно привести к типу правой части, но если вы используете составной оператор присваивания, это неявно делает вы. Как это происходит в вашем случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...