看板 java 關於我們 聯絡資訊
我的問題如下註解部份: 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
kimkao:void f(A b)底下的b=new A();存活scope只在void f()裡面 12/10 17:21
可是...我對於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)
hsnucsc:我實際執行完f(ptr) a是10吧 @@ 12/10 19:49
walm20:確定是5 12/10 20:17
hsnucsc:是5 我錯了 12/10 20:41
※ 編輯: walm20 來自: 140.118.126.177 (12/10 21:23)
adrianshum:java 只有 pass-by-value. 觀念清楚就不難明白 12/11 16:04
Lordaeron:定義問題, 跟觀念無關. 12/12 20:55