1.基本数据类型(int,char,double...)
当使用int a;来定义的时候,会在栈空间分配一个空间来存放a(此时为空);
当使用int a=2;来定义的时候,会在栈空间分配一个空间来存放a,同时去找有没有值为2的内存空间,如果有就把a的地址空间指向2的地址空间,如果没有就创建值为2的地址空间,把a的地址空间指向那个地址空间。
2.对象
在栈空间存放对象的地址(对应的堆空间的地址);
在堆空间存放对象。
3.String
String s=new String("Hello,World");//HELLO,WRLD放在静态存储区
String s="Hello,World";//和基本数据类型相似
4.数组
栈中存放数组在堆中的首地址;
堆中分配数组。
5.方法调用时的内存分配
实例变量和对象在堆中;
局部变量在栈中(方法执行完成之后就会被回收)。