多個(gè)對(duì)象指向相同

new 出來(lái)的 s1 就是一個(gè)地址值
1. 首先,main()方法被加載到棧內(nèi)存。(圖1)

2.創(chuàng)建第一個(gè)對(duì)象。在mian方法中出現(xiàn) s1;new Student() 就會(huì)在堆內(nèi)存中出現(xiàn),name 和 age 對(duì)應(yīng)的默認(rèn)值分別為 null 和 0;它的地址值是001,賦值給 s1,s1 通過(guò) 001 就指向堆內(nèi)存這塊地址。(圖2)

3.? ?s1.name = "林青霞";
這里修改了 s1 對(duì)應(yīng)的name值為:林青霞同理, s1.age = 30;? 把a(bǔ)ge 對(duì)應(yīng)的值修改為30? ? ? ?(圖 3)

4. 第一次輸出的時(shí)候。
s1 通過(guò) 棧內(nèi)存的 001 指向 堆內(nèi)存的 001.
name 和 age 的值分別是:林青霞 和 30
做一個(gè)拼接,在控制臺(tái)輸出? ? (圖 4)

5.? Student s2 = s1;
左邊 Student s2 會(huì)出現(xiàn)在 main方法中,把s1的值賦值給s2,s2和s1的值是相同的? 001? ,都指向 堆內(nèi)存 001 這塊內(nèi)存空間(圖 5)

6. 通過(guò) s2 修改name 的值為 張曼玉,s2 通過(guò)001指向堆內(nèi)存的001 ,修改 name 的值? (圖 6)
?通過(guò) s2 修改 age 的值為 28,s2 通過(guò)001指向堆內(nèi)存的001 ,修改 age 的值(圖 7)


7. 最后輸出 s1和s2 時(shí),s1、s2都是001 指向相同的堆內(nèi)存地址,他們的數(shù)據(jù)內(nèi)容是相同的(圖 8),所以在控制臺(tái)看到,輸出通過(guò) s1、s2 訪(fǎng)問(wèn)結(jié)果 是相同的(圖 9)


當(dāng)兩個(gè)對(duì)象指向相同,也就是它的地址值相同時(shí),其中一個(gè)對(duì)象修改了堆內(nèi)存的內(nèi)容,另一個(gè)對(duì)象去訪(fǎng)問(wèn)時(shí),內(nèi)容也是修改過(guò)的
8. 接著往下執(zhí)行, main方法就從棧內(nèi)存消失了

成員變量和局部變量
1. 什么是成員變量和局部變量
成員變量:類(lèi)中方法外的變量
局部變量:方法中的變量 (方法形參位置的變量也是局部變量)
2. 成員變量和局部變量區(qū)別
