堆:存储容器用的
栈:运行方法用的
public class Car {
//定义Car类的属性
//定义颜色属性
String color ;
//定义轮胎个数
int count ;
//定义跑的功能
public void run(){
System.out.println("小汽车在跑 ..."+color+"..."+count);
}
}
public class CarTest {
public static void main(String[] args) {
//创建出Car类的变量 , 创建出Car类的对象,小汽车真的有了
Car c = new Car();
//对象.调用类中的属性和方法
c.color = "无色";
c.count = 5 ;
c.run();
}
}
当运行主程序main的时候,会在栈内存。
存放main方法,当main方法运行调用car对象的时候,
会在堆内存创建car对象,car对象的成员变量也会进入堆内存中,
默认赋值,String类型赋值为null,int类型赋值为0 ,,,
然后堆内存的car对象的索引会指向栈内存中main方法 car对象的变量
然后再给堆内存中的car对象的变量进行赋值
对象的成员变量,跟随对象存入堆内存中,被垃圾回收清理
局部变量跟随方法存入栈内存中,随着方法出栈而清除
最后调用car对象里面的run方法,run方法进栈,执行run方法代码,执行结束run出栈,mian方法出栈, 堆内存中的数据就成为垃圾等待。jvm的垃圾回收清除掉