【发布时间】:2013-07-31 11:47:31
【问题描述】:
我在我的代码中发现了一个问题。先上代码:
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 分钟就弄清楚了(这次)。
【问题讨论】: