Я надеюсь, что кто-то сможет уточнить, что здесь происходит для меня. Я немного покопался в целочисленном классе, но поскольку целое число переопределяет оператор +
, я не мог понять, что происходит не так. Моя проблема с этой строкой:
Integer i = 0;
i = i + 1; // ← I think that this is somehow creating a new object!
Вот мои рассуждения:
Я знаю, что java передается по значению ( или передается по значению ссылки ), поэтому я думаю, что в следующем примере целочисленный объект должен увеличиваться каждый раз.
public class PassByReference {
public static Integer inc(Integer i) {
i = i+1; // I think that this must be **sneakally** creating a new integer...
System.out.println("Inc: "+i);
return i;
}
public static void main(String[] args) {
Integer integer = new Integer(0);
for (int i =0; i<10; i++){
inc(integer);
System.out.println("main: "+integer);
}
}
}
Это мой ожидаемый результат:
Inc: 1
main: 1
Inc: 2
main: 2
Inc: 3
main: 3
Inc: 4
main: 4
Inc: 5
main: 5
Inc: 6
main: 6
...
Это фактический результат.
Inc: 1
main: 0
Inc: 1
main: 0
Inc: 1
main: 0
...
Почему он так себя ведет?