Hi Im học tập cho kỳ thi scja của tôi và có một câu hỏi về chuỗi đi qua ref/value và cách chúng không thay đổi. Đoạn mã sau xuất ra "abc abcfg".Java String không thay đổi được thông qua tham chiếu/giá trị
Điều tôi muốn biết là tại sao điều này lại xảy ra? Im không hiểu những gì xảy ra bên trong phương thức f. Chuỗi được truyền theo giá trị vì vậy chắc chắn nó sẽ thay đổi thành "abcde" bên trong phương thức? Bởi vì nếu b + = "fg" gắn thêm vào chuỗi tại sao nó không hoạt động bên trong phương thức?
Cảm ơn!
public class Test {
public static void main(String[] args){
String a =new String("abc");
String b = a;
f(b);
b+="fg"
System.out.println(a + " " + b);
}
public static void f(String b){
b+="de";
b=null;
}
}
Điều quan trọng cần nhớ là các tham chiếu được truyền theo giá trị. f lấy một bản sao của tham chiếu ban đầu là con trỏ tới "fg". –