Учитывая следующий фрагмент кода:Java примитивным declaratiron
int i = 0;
int y = + ++i;
System.out.println(y);
Результат 1. Почему это действует декларация? Может ли кто-нибудь объяснить, что такое = +?
Учитывая следующий фрагмент кода:Java примитивным declaratiron
int i = 0;
int y = + ++i;
System.out.println(y);
Результат 1. Почему это действует декларация? Может ли кто-нибудь объяснить, что такое = +?
int y = + ++i;
Первый +
в этой строке просто одинарный +
оператор (см: Assignment, Arithmetic, and Unary Operators). Он ничего не делает. Это похоже на унарный оператор -
. Выше строка эквивалентна:
int y = ++i;
которая увеличивает i
, а затем присваивает новое значение i
к y
.
Java guarantees что будет оценено left-to-right
. В частности, ++ имеет higher precedence
, чем +. Поэтому он сначала связывает их, затем связывает операции добавления слева направо.
Здесь +
указывает, что это положительное значение или нет, т.е. unary
, и если вы измените значение на -
, тогда ответ будет -1
. то есть int y = - ++i;
даст -1
.
Первый плюс после знака равенства является признаком ценности. Значит, это положительное число.
int y = - ++i;
вернется -1
Не вопрос, я бы заботиться о, потому что никто не должен писать код, как это. Но я предполагаю, что ++ i = 1 достаточно прост, а дополнительный плюс - унарный плюс, как если бы вы написали int i = +1; Не обязательно, но приемлемо. – duffymo
Это вопрос из теста? Не похоже, что вы столкнулись с фактическим кодом ... – creinig
Действительно, это вопрос OCJP (формально известный как SCJP). Лучше всего это понять. –