我想出了我的代碼中的一個問題。第一代碼:Java for循環按值或引用
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);
}
}
}
的輸出是:
a
b
c
over
over
over
我假定第一回路也將覆蓋在陣列中的字符串。所以在任何情況下輸出都會結束。它似乎創建了一個值的副本,而不是創建一個引用。 我從未感覺到這一點。我做錯了嗎?是否有選項可以創建參考?
//編輯: 似乎每個人都知道,除了我。我來自C背景,並沒有足夠重視與C非常不同的術語參考。 幸運的是,我花了10分鐘才弄明白這一點(這一次)。
HTTP ://stackoverflow.com/questions/40480/is-java-pass-by-reference – assylias