Я надеюсь, что кто-то сможет прояснить, что здесь происходит для меня. Я копался в целочисленном классе для бит, но поскольку целое число переопределяет оператор +
, я не мог понять, что происходит не так. Моя проблема связана с этой строкой:
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 ...
Почему это так?