据我了解,如果我在写
Car a3=new Car()
该语句将创建一个a3
在 jvm 堆栈中命名的句柄,其所有属性都在 JVM 堆中。如果这是正确的,我想知道按值调用是如何工作的。所以,如果我创建一个方法checkMethod(Car c)
并通过说checkMethod(a3);
假设我们的汽车是
public class Car{
int a=0;
public int getpar(){
return a;
}
}
在checkMethod
我尝试访问 ausing a3.a = 5;
时,我更改了它的值,a3.a
它将在调用类中显示给我,并且它指向 jvm 在堆中创建的相同字段。
但是当我a3= null;
在调用方法中执行并再次返回我调用的方法
checkMethod(a3)
并尝试查看该对象时,它不为空吗?为什么它的行为与对象的属性不同的是???