Tôi hy vọng rằng ai đó có thể làm rõ những gì đang xảy ra ở đây cho tôi. Tôi đào xung quanh trong lớp số nguyên cho một chút nhưng vì số nguyên là ghi đè toán tử +
Tôi không thể tìm ra điều gì đang xảy ra. Vấn đề của tôi là với dòng này:Làm thế nào tôi có thể vượt qua một lớp Integer một cách chính xác bằng cách tham khảo?
Integer i = 0;
i = i + 1; // ← I think that this is somehow creating a new object!
Đây là lập luận của tôi: Tôi biết rằng java là đi qua giá trị (or pass by value of reference), vì vậy tôi nghĩ rằng trong ví dụ sau đối tượng số nguyên sẽ được tăng lên mỗi lần.
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);
}
}
}
Đây là kết quả mong muốn của tôi:
Inc: 1 main: 1 Inc: 2 main: 2 Inc: 3 main: 3 Inc: 4 main: 4 Inc: 5 main: 5 Inc: 6 main: 6 ...
Đây là sản phẩm thực tế.
Inc: 1 main: 0 Inc: 1 main: 0 Inc: 1 main: 0 ...
Tại sao nó hoạt động như thế này?
câu hỏi liên quan: http://stackoverflow.com/questions/4520137/does-java-have-mutable-types-for-integer-float-double-long – koppor