1.寄存器:最快的存储区,由编译器根据需求分配,我们在程序中无法控制.
2.栈:存放基本类型的变量数据和对象的引用,当对象本身不存放在栈中,而是存放在(new出来的对象)或者常量池中(字符串常量对象存放在常量池中)
3.堆:存放所有new出来的对象.
4.静态域:存放静态成员(static定义的).
5.常量池:存放字符串常量和基本类型常量(public static final)
6.非RAM存储:硬盘永久存储空间
如:String s1="abc";
String s2="abc";
这里的abc是存放在常量池中的,s1,s2是指向同一个abc,即s1,s2共享同一个abc.
String s3=new String("abc");
这里的abc是存放在堆中的,是新创建出来的对象,也就是说可以创建多个内容相同的对象
String s4=new String("abc");
s4,s3是两个对象他们指向的是在堆中处在不同地址的abc |