這兩種方式,好像都是對數組gg進行操作,但是為什么最后輸出的數組ss會不一樣?test01的結果是:h g f e e f g h test02的結果是:a b c d e f g h
1 回答

慕尼黑5688855
TA貢獻1848條經驗 獲得超2個贊
年輕人,雖然我已經多年沒干Java了,但是深度復制要不要了解一下?
你的在test1中,將ss賦給了gg,無論是在java,C#,js,php等(為什么就說這幾個?因為我就這四個最熟?。┱Z言里,都復制的都不是對象本身,而是復制的對象在內存的地址,雖然你用了gg和ss兩個變量,但是兩個變量引用的是同一個東西。
而你在test2中,重新給gg建立的數組,這樣就會在內存里存在兩個,你覺得一摸一樣的對象,但是兩個變量引用的卻不是同一個地址。
你可以做一個實驗,在兩個方法中定義完兩個變量,然后輸出gg==ss(原諒我忘了java的控制臺輸出怎么寫了),test1中應該是true,test2中應該是false
添加回答
舉報
0/150
提交
取消