首先,我们先了解一下栈内存和堆内存:
栈内存:位于通用RAM(随机访问存储器)中,程序通过栈指针可以直接获取到存储在栈内存中的数据,运行效率仅次于寄存器。
堆内存:一种通用的内存池(也位于RAM区),用于存放所有的Java对象,运行速度要比栈内存花费更多的时间。
下面通过一个案例来更加深入地了解,我们创建了一个fruit水果类,里面有两个属性,一个是水果类型,一个是价格。还有一个买水果的buy方法。
public class Fruit {
String type;
int price;
public static void Buy(){
System.out.println("买水果");
}
}
然后创建了一个FruitTest类
public class FruitTest {
public static void main(String[] args) {
Fruit fruit = new Fruit();
System.out.println(fruit);
System.out.println(fruit.type);
System.out.println(fruit.price);
fruit.type = "苹果";
fruit.price = 10;
System.out.println(fruit.type);
System.out.println(fruit.price);
fruit.Buy();
}
}
赋值前内存分配:
赋值后内存分配:
运行结果:
在未赋值前,因为String类型默认是null,int类型默认值是0。