如果有人可以帮我理解以下问题:
据我所知,double
是Java中的原始数据类型,Double
是不可变类。
每个参数都按值传递。如果它是原始类型(int
,double
,byte
),那么它是传递的实际值;如果它是一个对象类型,那么它就是该对象的地址被复制。
如果是这样,为什么不更改Double
类型的参数?
...
public static void main(String[] args) {
Double value = new Double(0);
SomeObj so = new SomeObj();
so.setNewValue(value);
System.out.println(value);
}
...
public class SomeObj {
public void setNewValue(Double changeMe)
{
changeMe = new Double(10.0);
}
}
答案 0 :(得分:6)
通过值传递的对象的引用。
在setNewValue
方法中,您更改了引用,因此changeMe
变量指向其他内容。 <{1}}方法中对原始value
对象的(引用)不会改变。