多個對象指向相同
new 出來的 s1 就是一個地址值
1. 首先,main()方法被加載到棧內(nèi)存婚被。(圖1)
2.創(chuàng)建第一個對象狡忙。在mian方法中出現(xiàn) s1;new Student() 就會在堆內(nèi)存中出現(xiàn)址芯,name 和 age 對應(yīng)的默認(rèn)值分別為 null 和 0灾茁;它的地址值是001,賦值給 s1是复,s1 通過 001 就指向堆內(nèi)存這塊地址删顶。(圖2)
3.? ?s1.name = "林青霞";
這里修改了 s1 對應(yīng)的name值為:林青霞同理, s1.age = 30;? 把a(bǔ)ge 對應(yīng)的值修改為30? ? ? ?(圖 3)
4. 第一次輸出的時候淑廊。
s1 通過 棧內(nèi)存的 001 指向 堆內(nèi)存的 001.
name 和 age 的值分別是:林青霞 和 30
做一個拼接逗余,在控制臺輸出? ? (圖 4)
5.? Student s2 = s1;
左邊 Student s2 會出現(xiàn)在 main方法中,把s1的值賦值給s2季惩,s2和s1的值是相同的? 001? 录粱,都指向 堆內(nèi)存 001 這塊內(nèi)存空間(圖 5)
6. 通過 s2 修改name 的值為 張曼玉,s2 通過001指向堆內(nèi)存的001 画拾,修改 name 的值? (圖 6)
?通過 s2 修改 age 的值為 28啥繁,s2 通過001指向堆內(nèi)存的001 ,修改 age 的值(圖 7)
7. 最后輸出 s1和s2 時青抛,s1旗闽、s2都是001 指向相同的堆內(nèi)存地址,他們的數(shù)據(jù)內(nèi)容是相同的(圖 8)蜜另,所以在控制臺看到适室,輸出通過 s1、s2 訪問結(jié)果 是相同的(圖 9)
當(dāng)兩個對象指向相同举瑰,也就是它的地址值相同時捣辆,其中一個對象修改了堆內(nèi)存的內(nèi)容,另一個對象去訪問時此迅,內(nèi)容也是修改過的
8. 接著往下執(zhí)行汽畴, main方法就從棧內(nèi)存消失了
成員變量和局部變量
1. 什么是成員變量和局部變量
成員變量:類中方法外的變量
局部變量:方法中的變量 (方法形參位置的變量也是局部變量)