Re[3]: Что быстрее: j=++i или j=i++, если i,j - Integer
От: stasukas  
Дата: 17.03.09 07:43
Оценка: 2 (2)
Здравствуйте, Ildar Karimov, Вы писали:

IK>ладно, вот что говорит декомпайлер:

IK>1) j = i = Integer.valueOf(i.intValue() + 1);
IK>2) Integer localInteger1 = i; Integer localInteger2 = i = Integer.valueOf(i.intValue() + 1); j = localInteger1;

IK>угадайте, какой вариант i++, а какой — ++i?

Вопрос поставлен неправильно.

Если сравнивать операции
i++;  и  ++i;

то они равноценны, т.к. имеют на выходе один результат — инкрементированное на единицу значение i.

Если же рассматривать именно эти операции
1:  j=++i; 
и 
2:  j=i++;

то в первом случае инкрементитруется на единицу значение i и потом полученное значение присваивается двум переменным — i и j.
Во втором случае текущее значение i присваивается переменной j, а потом инкрементитруется на единицу значение i и присваивается обратно переменной i. об этом и говорит декомпилятор.

Если на вход каждой операции подать i = 0, то на выходе будет следующее в каждом случае:
1:  i = 1,  j = 1
2:  i = 1,  j = 0


Итак, что же сравнивать теперь?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.