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 }