看板 java 關於我們 聯絡資訊
大家好,最近在試著學習java,關於參考變數的運用有點疑問,想向各位先進求教: 1 private Node Root; 2 3 public BTree() { 4 Root = null; 5 } 6 7 public void Insert(int TData) { 8 Insert( Root, TData); 9 return ; 10 } 11 12 private void Insert( Node NowNode, int TData) { 13 if(NowNode==null) { 14 NowNode = new Node(); 15 NowNode.Data = TData; 16 } 17 ... 18 return ; 19 } 我本來希望在14與15行改變root的內容,但是這寫法是錯的,上網查閱一些資料後得知 因為 NowNode 只是 root 這個參考的複製品,所以一但脫離 12~19 行這個範圍它就消 失了。 因為 Insert( Node, int) 這個方法會用到遞迴結構,而每次傳入的 Node 都不同,請 問 java 之中有方法可以讓我在 Insert( Node, int) 之中改變 NowNode 的本體嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.72.212.239
coolcomm:因為Java是pass by value 02/04 19:10
ssccg:要改BTree下面的Root只能把BTree整個傳進去 02/04 19:36
coolcomm:其實我也想說不能直接包一個Linkedlist在class裡面嗎... 02/04 19:38
ssccg:NowNode的本體(object?)本來就可以改,是method caller裡的 02/04 19:41
ssccg:NowNode reference變數不能改 02/04 19:43
popcorny:你把物件(object)跟參考(reference)混為一談了.. 02/05 13:42