一. 前提基本概念
-
成员变量:直接在类中定义的变量,称为成员变量。(和定义在方法外的引用数据一起存储在堆中)
-
局部变量:定义在方法中的变量,成为局部变量(在栈中储存)
-
引用数据类型是因为只是一个地址,是引用的别人的数据,所以叫引用数据类型
-
不同的数据类型对应的默认值分别是什么?
引用数据类型的默认值都是null;
基本数据类型:byte short int long默认值都是0,float、double默认值都是0.0,boolean默认值是false
二. 内存图景运行流程
以以下代码为例
package cn.yunhe.classtest;
public class Shop {
// 商品分类和价格
public String name;
public String list;
private double price;
public void Setprice(int REprice) {
price = REprice;
}
// 这是小件武器的描述
public void Little() {
System.out.println(price + "元的" + name + "是" + list + "类的武器,是散件武器");
}
//主程序
public static void main(String[] args) {
//创建装备(epuip)对象
/**
* 1号装备
*/
Shop EQ1 = new Shop();
EQ1.name="暴风大剑";
EQ1.list="攻击";
EQ1.Setprice(1300);
EQ1.Little();
/**
* 2号装备
*/
Shop EQ2 = new Shop();
EQ2.Setprice(850);
EQ2.name="爆裂魔棒";
EQ2.list="魔法";
EQ2.Little();
}
}
- 首先,主程序main进栈开始运行程序。
- 然后创建一个对象EQ1并调用构造方法Shop()从而在堆中开辟出一个区域存放该对象的属性。
- 随后开始运行EQ1.name和EQ1.list,在堆中为成员变量name和list赋值。
- 随后调用方法Setprice()进栈,并在堆中为变量price赋值。随后出栈
- 再之后调用方法Little()进栈运行。随后出栈
- 最后,主程序main出栈