Окончательная переменная печать в Java - PullRequest
0 голосов
/ 13 октября 2018
final int a=5;
System.out.println(a+1)

печатает 6, тогда как System.out.println(a++) или a=a+1, а затем s.o.p(a) выдаст ошибку.

Зачем выводить 6, если окончательные значения не могут быть изменены?

Ответы [ 2 ]

0 голосов
/ 13 октября 2018

Потому что вы никогда не изменяете a в вашем примере.Вы печатаете результат a+1.Если вы напечатаете впоследствии, вы увидите, что это все еще 5.

Это в основном

int a = 5;
int b = a+1;
System.out.println(b); // prints 6
System.out.println(a); // still prints 5
0 голосов
/ 13 октября 2018

И a++, и a=a+1 присваивают новое значение a.

a+1 - нет: оно просто на 1 больше значения в a.

Оценка утверждений:

System.out.println(a);
System.out.println(a+1);
System.out.println(a);

покажет, что значение a одинаково до и после.Если сделать то же самое с a++ или a=a+1 в среднем выражении (очевидно, сначала сделав a не финальным), то вы увидите, что a изменился.

Это не должно быть более удивительным, чем System.out.println(5+1) печать 6, при этом значения 5 и 1 остаются без изменений.

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