作者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
1F:推 coolcomm:因为Java是pass by value 02/04 19:10
2F:→ ssccg:要改BTree下面的Root只能把BTree整个传进去 02/04 19:36
3F:→ coolcomm:其实我也想说不能直接包一个Linkedlist在class里面吗... 02/04 19:38
4F:→ ssccg:NowNode的本体(object?)本来就可以改,是method caller里的 02/04 19:41
5F:→ ssccg:NowNode reference变数不能改 02/04 19:43
6F:→ popcorny:你把物件(object)跟参考(reference)混为一谈了.. 02/05 13:42