栈(Stack)
栈内存既负责保存那些针对堆对象(heap objects)的引用,又负责保存各种值的类型,即:存储的是数值本身,而不是对堆中某个对象的引用。在Java中,我们称为原始类型(primitive types)。
堆(Heap)
这部分的内存存储着实际对象,它们会被栈的变量所引用。让我们来看如下代码行:
StringBuilder builder = new StringBuilder();
关键字new负责确保堆能够获取足够的可用空间。它在存储器中创建StringBuilder类型的对象,并通过“builder”的引用,其压入栈中。
public static void main(String[] args) {
int data = 1;
IdcEq idcEq2 = new IdcEq();
IdcEq idcEq3 = new IdcEq();
change1(data);
change2(idcEq2);
change3(idcEq3);
System.out.println(data);
System.out.println(idcEq2);
System.out.println(idcEq3);
}
private static void change1(int i) {
i = 2;
}
private static void change2(IdcEq i) {
i.setIp("1");
}
private static void change3(IdcEq i) {
i = new IdcEq();
i.setIp("33");
}
结果如图: