看板 java 關於我們 聯絡資訊
public class test { private int index = 0; public test() { this.index = 0; } public void setIndex(int index) { this.index = index; } public int getIndex() { return this.index; } public static void assignT(test t) { t = new test(); } public static void main(String[] args){ test t1 = new test(); t1.setIndex(9); assignT(t1); System.out.println("value : "+t1.getIndex()); } } 如果傳入function 裡面的是 object的 reference, 那為什麼執行assignT之後 印出來的值一樣是9而不是0?? 假設 t1 的位址是 0xAA 那傳進 assignT 裡的 t 會是copy的一份 0xAA的 object 位址 然後 t = new test(); 會把0xAA的內容指向一個新的 test實體, 這樣理解有錯嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.248.140
darkk6:t1 指向的 test instance 值還是 9 沒錯啊 10/30 18:16
※ 編輯: newjoy 來自: 220.135.248.140 (10/30 18:20)
idlejustin:t = new test(); 不是把0xAA的內容重指 10/30 19:24
idlejustin:assignT 裡的 t 也不是 copy 的一份 0xAA 的 object 10/30 19:25
idlejustin:位址 t 是一個新的 referenece 變數 10/30 19:32
james732:我想問一下,如果要讓main裡的t1真的換掉的話,要怎麼改? 10/30 20:39
james732:在C裡面可以用雙重指標**來做到,Java該怎麼寫呢? 10/30 20:41
wendly777:將test包到另外一個object,或傳test [],基本上array就 10/30 21:07
wendly777:是另外一個object了,應該是沒其他方法了吧? 10/30 21:10
meconin:把 t1 宣告給 class ... 不要給 main 11/05 11:45
meconin:不過這跟包給另一個 object 是一樣的意思 11/05 11:53