Mình đọc sách thì thấy viết truyền tham trị áp dụng với trường hợp tham số là kiểu dữ liệu nguyên thủy. Còn truyền tham biến áp dụng cho các trường hợp tham số là kiểu tham chiếu: Array, Object. Như trường hợp dưới đây mình đổi giá trị của 2 mảng int.
Mã:
public class ArraySwap {
public static void main(String[] args) {
int[] a = {1, 2, 3, 4, 5};
int[] b = {6, 7, 8, 9, 0};
swap1(a, b);
for (int index = 0; index < a.length; index++) {
System.out.print(a[index]);
}
System.out.println();
for (int index = 0; index < b.length; index++) {
System.out.print(b[index]);
}
System.out.println();
}
public static void swap(int[] array1, int[] array2) {
int[] temp = array1;
array1 = array2;
array2 = temp;
}
}
Nếu code như trên thì 2 mảng tham biến truyền vào sẽ không bị thay đổi giá trị. Còn nếu code method swap như sau thì nó sẽ bị thay đổi:
Mã:
public static void swap1(int[] array1, int[] array2) {
int[] temp = array1;
array1 = array2;
array2 = temp;
int tg;
for (int i = 0; i < array1.length; i++) {
tg = array1[i];
array1[i] = array2[i];
array2[i] = tg;
}
}
int[] temp = array1; Nghĩa là mình khởi tạo 1 mảng temp kiểu int và tham chiếu vào mảng int trong heap mà thằng array1 tham chiếu đến. Như vậy tại sao giá trị lại không thay đổi, còn chạy for đổi từng phần tử thì nó lại thay đổi. Bạn nào biết vào giải thích hộ với?
View more random threads:
Thông qua phân tích dữ liệu Google từ 86 quốc gia, mới đây, một công ty tại Anh đã công bố bảng xếp hạng kích tấc "cậu nhỏ" của các nước trên thế giới. Kết quả, hầu hết các nước xếp ở nhóm đầu của...
"Chim" của chàng trai Việt thuộc...