Java - Byte对象的Pass by Reference

时间:2014-01-16 21:40:42

标签: java byte pass-by-reference autoboxing

我在这里阅读了一些代码: 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()自动装箱?!因此价值不会被传回。

有什么想法吗?问候。

2 个答案:

答案 0 :(得分:6)

Byte是不可变的,这意味着它的值无法更改。分配给它将不适用于您的情况,因为这只会重新绑定引用(它不会传播回调用者)。

您可以使用MutableByte,单元素byte / Byte数组或自定义类。

答案 1 :(得分:-2)

上一个答案是正确的,但只是要添加 - 是的,在这种情况下,Byte对象是通过引用传递的。但是因为Byte对象是不可变的,即使它是通过引用传递的,也无法修改它。

更具体地说,当你调用一个函数时,函数中的参数是按值传递的,但是当你传递一个对象时,实际按值传递的是对该对象的引用。