作者icetofux ()
看板java
標題[問題] 參考變數的傳遞
時間Mon Feb 4 18:44:00 2013
大家好,最近在試著學習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