sách gpt4 ai đã đi

Tại sao tham số ArrayList được sửa đổi nhưng tham số String thì không?

In lại Tác giả: IT Lao Gao Thời gian cập nhật: 2023-10-28 20:34:25 29 4
mua khóa gpt4 Nike

lớp công khai StackOverFlow {
public static void main(String[] args) {
ArrayList al = new ArrayList();
al.add("A");
al.add("B");
đánh dấu là Null(al);
System.out.println("Các phần tử của ArrayList là "+al);

Chuỗi str = "Xin chào";
markStringAsNull(chuỗi);
System.out.println("chuỗi " + chuỗi);
}
riêng tư tĩnh void markAsNull(ArrayList str){
str.add("C");
chuỗi = null;
}
riêng tư tĩnh void markStringAsNull(String str){
str = str + "Thêm tôi vào";
chuỗi = null;
}
}

Kết quả đầu ra:

Các phần tử của ArrayList là [A, B, C]
Xin chào

hiện hữu MảngDanh sách Trong trường hợp này, phần tử được thêm vào đang được lấy lại. hiện hữu Sợi dây Trong trường hợp này, lệnh gọi phương thức không có tác dụng gì đối với chuỗi được truyền vào. JVM thực chất có chức năng gì? Có ai có thể giải thích chi tiết được không?

1 Câu trả lời

Trong trường hợp của các đối tượng chuỗi Arraylist, các phần tử được thêm vào sẽ được lấy lại. Trong trường hợp của String, lệnh gọi phương thức không có tác dụng gì đối với String được truyền.

Điều này là do Java được truyền theo giá trị và Sợi dây Không thể thay đổi

Khi bạn gọi

markAsNull(ArrayList chuỗi)

MỘT đường Tài liệu tham khảo mới là al Trỏ đến cùng một MảngDanh sách Tạo. Khi bạn là đường thượng đẳng thêm vào Khi một phần tử được thêm vào, nó sẽ được thêm vào cùng một đối tượng. Sau này bạn sẽ đường Đưa vào vô giá trị Nhưng đối tượng thêm các giá trị mới và được biểu diễn bằng a1 Điểm.

Khi bạn gọi

markStringAsNull(Chuỗi str)
{
str = str + "Thêm tôi vào";
// ...
}

str = str + "Thêm tôi vào"; Tạo một hàng mới bằng cách thêm chuỗi đã cho Sợi dây đối tượng và gán nó cho đường .nhưng một lần nữa nó chỉ là một tham chiếu đến chuỗi thực tế hiện đang trỏ đến chuỗi mới được tạo. (do không thể thay đổi) và chuỗi gốc không bị thay đổi.

Tại sao tham số ArrayList được sửa đổi nhưng tham số String thì không? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/15871825/

29 4 0
CNTT Lao Gao
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com