Java for loop by value or by reference
我发现我的代码中有一个问题。首先是代码:
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分钟就弄清楚了(这次)。