【发布时间】:2014-09-10 08:13:51
【问题描述】:
好的,如果java中的原始数据类型被传递给方法,它们被视为按值传递。如果将对象数据类型传递给方法,它们会被视为按引用传递,对吗?所以在这段代码中:
//Class 1
public void passByValue(int x){
x = 0;
}
public void passByReference(Integer y){
y= 40;
}
//MainClass(contains main method)
int primitiveType = 50;
Integer wholeInteger = 100;
Class1 a = new Class1();
a.passByValue(primitiveType);
a.passByReference(wholeInteger);
System.out.println(primitiveType);
System.out.println(wholeInteger);
这应该导致primitiveType等于50(变量没有改变)。我明白,但是 Integer 对象也没有改变......那么这是如何工作的?谢谢!
【问题讨论】:
-
这个问题已经被问过很多次了...... Java 是“按值传递”,对对象的引用也是按值传递的——所以你不要更改发送的引用!
-
好的,那么 Collections.sort() 呢?您不必这样做:“listName = Collections.sort(listName);”相反,您可以这样做:“Collections.sort(listName);”并且 listName 将被排序(即更改)。所以它是 PASS BY REFERENCE。
-
没有。 listName 是一个参考。引用是按值传递的。
-
那么为什么我的代码示例没有成功..?我的意思是 Collections.sort() 和我的方法有什么区别?您刚刚承认引用是按值传递的……那这意味着什么?
标签: java pass-by-reference pass-by-value