Java按值传递所有内容,如果它是一个对象,则传递的是对象的引用值。就像是,
void someMethod()
{
int value = 4;
changeInt(value);
System.out.printlin(value);
}
public void changeInt(int x)
{
x = x + 1;
}上面的代码将打印4,因为它是通过值传递的
class SomeClass
{
int x;
}
void someMethod()
{
SomeClass value = new SomeClass();
value.x = 4;
changeCls(value);
System.out.printlin(value.x);
}
public void changeCls(SomeClass cls)
{
cls = new SomeClass();
cls.x = 5;
}上面的代码仍然会打印4,因为对象是按值传递的,对象的引用是在这里传递的,即使它在方法内部改变了它也不会反映到方法'someMethod'。
class SomeClass
{
int x;
}
void someMethod()
{
SomeClass value = new SomeClass();
value.x = 4;
changeCls(value);
System.out.printlin(value.x);
}
public void changeCls(SomeClass cls)
{
cls.x = cls.x + 1;
}这里它也按值传递对象,该值将是对象的引用。因此,当您更改此对象的某个字段时,它将反映到引用该对象的所有位置。因此它会打印5.所以这可以是你可以用来做你想要的方式。将值封装在对象中并将其传递给要更改它的方法。