Tôi có đoạn mã sau:Java: Tại sao phương thức hoán đổi này không hoạt động?
public class Main {
static void swap (Integer x, Integer y) {
Integer t = x;
x = y;
y = t;
}
public static void main(String[] args) {
Integer a = 1;
Integer b = 2;
swap(a, b);
System.out.println("a=" + a + " b=" + b);
}
}
Tôi hy vọng nó sẽ in a = 2 b = 1, nhưng nó in ngược lại. Vì vậy, rõ ràng phương thức hoán đổi không hoán đổi một giá trị a và b. Tại sao?
Vui lòng tham khảo chênh lệch giữa cuộc gọi bằng giá trị và gọi bằng cách tham khảo. –
Trong phương thức hoán đổi, bạn đang truyền 'giá trị' của đối tượng và không tham chiếu đến đối tượng thực, bất cứ điều gì bạn làm bên trong phương thức hoán đổi sẽ không ảnh hưởng đến biến a và b. –