1.Java中对象的内存地址,在JDK中如何去理解Java对象中内存地址
- 栈内存:存储的变量, 对象的地址空间的引用
- 堆内存:存储的是对象
1 public class MeiZi { 2 public static void main(String[] args) { 3 /** 4 * 1. new MeiZi(), 就是创建了一个MeiZi类的对象 5 * 2. MeiZi类的对象存储在JVM中堆内存里面 6 * 3.彬彬姐其实是MeiZi类所产生的对象的引用(存储是MeiZi这个类的对象的地址空间), 它存储在栈内存 7 */ 8 MeiZi 彬彬姐 = new MeiZi(); 9 } 10 } 11 12 public class ShuaiGe { 13 public static void main(String[] args) { 14 ShuaiGe 彬彬姐 = new ShuaiGe(); 15 } 16 }
2.请看下面的一个例子,同时说明下面例子中对象的地址空间是如何存储的
1 public class TestString { 2 3 public void changeString(String str) { //改变字符串中存储的值 4 str = “Hello World”; 5 } 6 7 public static void main(String[] args) { 8 String str = “Java”; 9 TestString t = new TestString(); 10 t.changeString(str); 11 System.out.println(“str = ” + str); 12 } 13 }
3.分析下面的程序代码中对象的地址空间是如何存储的
1 public class ObjectMemorySample { 2 String name; 3 public ObjectMemorySample(String name) { 4 this.name = name; 5 } 6 public static void main(String[] args) { 7 ObjectMemorySample obj = new ObjectMemorySample(“吴国友”); 8 obj = new ObjectMemorySample(“张屹林”); 9 System.out.println(“obj.name = ” + obj.name); 10 } 11 }