我在我的代码中发现了一个问题。首先是代码:
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 非常不同的术语 reference 没有给予足够的关注。幸运的是,我只花了 10 分钟就弄清楚了(这次)。