据我了解,如果我写当我在java中创建对象时,jvm究竟发生了什么?
Car a3=new Car()
该语句将创建一个与它在JVM堆中的所有属性JVM堆命名a3
手柄。 如果这是正确的,我想知道价值如何调用。 所以,如果我创建一个方法checkMethod(Car c)
并说checkMethod(a3);
假设我们的车叫它是
public class Car{
int a=0;
public int getpar(){
return a;
}
}
在
checkMethod
我尝试访问using a3.a = 5;
,所以我改变了a3.a
值,它会显示我的主叫类以及它指向jvm在堆中创建的相同字段。
但是,当我在调用方法中做a3= null;
并再次返回时,我打电话给 checkMethod(a3)
并试图看到这个对象它不是null? 为什么它的表现与对象属性相比是不同的?
想象A3(和所有变量)为与对他们写的地址的纸片。当你将一个变量传递给一个方法时,你将**地址**复制到一张新纸上(bacuse java是按值传递的)。当您将该方法内的变量设置为空时,您可以在纸上写出地址。但原来的遗迹 –
谢谢!这是有道理的。 – piyush