[問題] call by ref

看板java作者 (New CygnusX)時間17年前 (2008/12/10 14:57), 編輯推噓5(501)
留言6則, 5人參與, 最新討論串1/2 (看更多)
我的問題如下註解部份: class A{ } public class Test{ public static void f(A b) { b=new A(); } public static void main(String[] a) { A b=null; f(b); //為什麼執行完這行b還是null? } } 先謝啦 目前想到的解法: (若一定要透過function f來new的話) 若變數要在main一開始就宣告,而隨著得到更多的資訊來new A() 則只能把 f之return type改成A 藉由return new A();來達成 -- 我的露天拍賣: http://tinyurl.com/6z4rw7 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.118.126.177

12/10 17:21, , 1F
void f(A b)底下的b=new A();存活scope只在void f()裡面
12/10 17:21, 1F
可是...我對於variable的scope又做了以下測試 http://gist.github.com/34301 如果依照kimkao大所說來看 感覺又好像怪怪的 執行完Matrix的ctor m就無效了吧? 回到原本問題 我覺得是 很像C裡面的call by value 例子如下: void f(int *p) { p=new int (5); *p=10; } void main() { int a=5; int *ptr=&a; f(ptr); //執行完這行 a還是5 } ※ 編輯: walm20 來自: 140.118.126.177 (12/10 19:00)

12/10 19:49, , 2F
我實際執行完f(ptr) a是10吧 @@
12/10 19:49, 2F

12/10 20:17, , 3F
確定是5
12/10 20:17, 3F

12/10 20:41, , 4F
是5 我錯了
12/10 20:41, 4F
※ 編輯: walm20 來自: 140.118.126.177 (12/10 21:23)

12/11 16:04, , 5F
java 只有 pass-by-value. 觀念清楚就不難明白
12/11 16:04, 5F

12/12 20:55, , 6F
定義問題, 跟觀念無關.
12/12 20:55, 6F
文章代碼(AID): #19FsXUn0 (java)
討論串 (同標題文章)
以下文章回應了本文
完整討論串 (本文為第 1 之 2 篇):
問題
5
6
文章代碼(AID): #19FsXUn0 (java)