class car(){
string color;
string size;
run();
}
class cardemo(){
public void main(){
car a =new car();// 在堆内存中创建对象
car b=new car();//创建对象
a.color='blue';//对堆内存中的属性进行赋值
a.size='big';
a.run();
}
class文件在内存中方法区中自动加载 执行文件的时候 先加载cardemo.class(java cardemo) 因为cardemo中有car(),然后加载car.class,同时加载成员方法和成员变量。jvm 自动加载main方法,开始执行main方法。new car()时在堆内存中开辟空间,变量进行初始化。 然后 a 被赋值。 执行a.run()的时候,run方法加载到栈内存中,在栈内存中a调用run()方法,此时的a引用的是被赋值后的堆内存中的地址值。方法执行完之后 弹栈 。main方法执行完之后也弹栈。程序执行完毕。拉基回收机制清理堆内存中的new出来的对象。 同理 ,当new出来两个对象的时候,会在堆内存中开辟两个空间,每个空间对应的不同的地址值。 尽管new出来两个对象,但是方法区中的类加载的 都是一个car.calss 。class文件只用在方法区加载一次。就可以被new 很多次。new 完的对象在程序执行完毕之后由jvm自动清理。
}