“Java is pass-by-value
”
—— Java 语言规范
然而,有些事情让我感到困惑。请看我的例子
public class Main {
public static void main(String[] args) {
StringBuilder myBuilder = new StringBuilder("Michael");
editString(myBuilder);
System.out.println(myBuilder);
}
public static void editString(StringBuilder x){
x.append(" Ardan");
}
}
输出:
Michael Ardan
这个例子:
public class Main {
public static void main(String[] args) {
int myInt = 10;
editInt(myInt);
System.out.println(myInt);
}
public static void editInt(int x){
x ++;
}
}
输出:
10
我尝试阅读其他文章,都说 Java 始终是pass-by-value
. 我做了一些测试场景。将这两个示例相互比较让我认为 Java 的 Objects 是pass-by-reference
,而原始类型是pass-by-value
. 但是,如果您尝试将int
原始类型替换为Integer
Object,结果将是相同的。如果有人在这里解释这两个例子,我会很高兴。