我在这里阅读了一些代码: Is Java "pass-by-reference" or "pass-by-value"?
public void foo(Dog d)
{
d.getName().equals("Max"); // true
d.setName("Fifi");
}
Dog aDog = new Dog("Max");
foo(aDog);
aDog.getName().equals("Fifi"); // true
我可以对Byte
对象执行相同的操作。我现在在我的代码中,想知道如何“设置”字节对象的值?
如果我使用=
赋值运算符,它似乎执行new Byte()
自动装箱?!因此价值不会被传回。
有什么想法吗?问候。
答案 0 :(得分:6)
Byte
是不可变的,这意味着它的值无法更改。分配给它将不适用于您的情况,因为这只会重新绑定引用(它不会传播回调用者)。
您可以使用MutableByte
,单元素byte
/ Byte
数组或自定义类。
答案 1 :(得分:-2)
上一个答案是正确的,但只是要添加 - 是的,在这种情况下,Byte对象是通过引用传递的。但是因为Byte对象是不可变的,即使它是通过引用传递的,也无法修改它。
更具体地说,当你调用一个函数时,函数中的参数是按值传递的,但是当你传递一个对象时,实际按值传递的是对该对象的引用。