2013-04-22 4 views
1

Учитывая следующий фрагмент кода:Java примитивным declaratiron

int i = 0; 

int y = + ++i; 

System.out.println(y); 

Результат 1. Почему это действует декларация? Может ли кто-нибудь объяснить, что такое = +?

+0

Не вопрос, я бы заботиться о, потому что никто не должен писать код, как это. Но я предполагаю, что ++ i = 1 достаточно прост, а дополнительный плюс - унарный плюс, как если бы вы написали int i = +1; Не обязательно, но приемлемо. – duffymo

+0

Это вопрос из теста? Не похоже, что вы столкнулись с фактическим кодом ... – creinig

+0

Действительно, это вопрос OCJP (формально известный как SCJP). Лучше всего это понять. –

ответ

7
int y = + ++i; 

Первый + в этой строке просто одинарный + оператор (см: Assignment, Arithmetic, and Unary Operators). Он ничего не делает. Это похоже на унарный оператор -. Выше строка эквивалентна:

int y = ++i; 

которая увеличивает i, а затем присваивает новое значение i к y.

0

Java guarantees что будет оценено left-to-right. В частности, ++ имеет higher precedence, чем +. Поэтому он сначала связывает их, затем связывает операции добавления слева направо.

2

Здесь + указывает, что это положительное значение или нет, т.е. unary, и если вы измените значение на -, тогда ответ будет -1. то есть int y = - ++i; даст -1.

2

Первый плюс после знака равенства является признаком ценности. Значит, это положительное число.

int y = - ++i; вернется -1

Смежные вопросы