Java 通过值传递所有内容,因此如果您在类方法中使用赋值运算符,您将不会更改原始对象。
例如:
public class Main {
public static void main(String[] args) {
Integer i = new Integer(2);
setToThree(i);
System.out.println(i);
}
public static void setToThree(Integer i) {
i = new Integer(3);
}
}
将打印 2。
话虽如此,如果您在引用中传递的对象是可变的,您可以按照您的想法对其进行更改。
例如:
public class Main {
public static void main(String[] args) {
MyMutableInt i = new MyMutableInt(2);
setToThree(i);
System.out.println(i);
}
public static void setToThree(MyMutableInt i) {
i.set(3);
}
}
这将打印 3(假设 MyMutableInt 具有正确的 toString() 方法)。
当然,Java Integers 是不可变的,所以没有能力像那样被改变。所以你在这里有两个选择:
注意:这不适用于任何类型的原语。为此,您将不得不通过返回值传回。如果您有多个值要变异,则必须将它们包装在一个对象中以返回它们,因此您也可以使用此方法。