作者:木棉 | 来源:互联网 | 2022-12-18 18:32
我想知道在Java中调用值并尝试一些代码.
public class Test {
public static void main(String[] args) {
Test test = new Test();
Integer integer = 4;
System.out.println(integer);
test.change(integer);
System.out.println(integer);
}
public void change(Integer integer) {
integer++;
}
}
因为java是按值调用,所以我的输出类似于:
4
5
但它打印出来了
4
4
然后我了解到Integers是不可变的,所以我的方法"change"创建了值为5的新Integer,而main中的"integer"仍然是4.
然后我写了下面的课:
public class Test {
public static void main(String[] args) {
Test test = new Test();
MyInteger myInteger = new MyInteger();
myInteger.x = 4;
System.out.println(myInteger.x);
test.change(myInteger);
System.out.println(myInteger.x);
}
public void change(MyInteger myInteger) {
myInteger.x++;
}
}
class MyInteger {
Integer x;
}
而现在输出就像我最初预期的那样
4
5
这是我的论文:
方法通过创建一个新的不可变来change(Integer integer)
修改myInteger
对象,并且此方法中的参数始终指向同一个实例.我对吗?Integer
Integer x
myInteger
MyInteger