我在我的代码中发现了一个问题。首先是代码:
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
我以为第一个循环也会覆盖数组中的String。因此,无论如何输出都将结束。似乎它创建值的副本,而不是创建引用。我从未意识到这一点。我做错了吗?是否可以选择创建参考?
//编辑:似乎每个人都知道,除了我。我来自C语言,没有对与C完全不同的术语“引用”给予足够的关注。幸运的是,这一次我只花了10分钟就弄清了这一点。