Здравствуйте, 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
Итак, что же сравнивать теперь?