我解决了我的代码中的一个问题。首先是代码:
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分钟就搞清楚了。