Tôi đã tìm ra một vấn đề trong Mã của tôi. Đầu tiên các mã:Java cho vòng lặp theo giá trị hoặc tham chiếu
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
String[] blablubb = { "a", "b", "c" };
for(String s : blablubb) {
s = "over";
}
printArray(blablubb);
for (int i = 0; i < blablubb.length; i++) {
blablubb[i] = "over";
}
printArray(blablubb);
}
public static void printArray(String[] arr) {
for(String s : arr) {
System.out.println(s);
}
}
}
Đầu ra là:
a
b
c
over
over
over
tôi cho rằng các vòng đầu tiên cũng sẽ ghi đè lên các String trong mảng. Vì vậy, đầu ra sẽ kết thúc trong mọi trường hợp. Dường như nó tạo ra một bản sao của giá trị thay vì tạo một tham chiếu. Tôi chưa bao giờ nhận thức được điều này. Tôi có làm sai không? Thay vào đó, có tùy chọn để tạo tham chiếu không?
// Chỉnh sửa: Có vẻ như mọi người đều biết về điều đó ngoại trừ tôi. Tôi từ C nền và không chú ý đủ để các tài liệu tham khảo hạn đó là rất khác nhau để C. May mắn thay nó đã cho tôi chỉ 10 phút để con số này ra (thời gian này).
http : //stackoverflow.com/questions/40480/is-java-pass-by-reference – assylias