看板 java 關於我們 聯絡資訊
※ 引述《walm20 (New CygnusX)》之銘言: : 我的問題如下註解部份: class A{ } public class Test{ public static void f(A c) { c=new A(); } public static void main(String[] a) { A b=null; f(b); //為什麼執行完這行b還是null? } } 我改了一下這個程式 這樣點一下 你再自己想想看 然後想清楚兩件事情 1. ref到底是什麼東西 2. call by ref實際上到底做了什麼 大概就會明瞭了 : 先謝啦 : 目前想到的解法: (若一定要透過function f來new的話) : 若變數要在main一開始就宣告,而隨著得到更多的資訊來new A() : 則只能把 f之return type改成A : 藉由return new A();來達成 -- 爛室友毀了我的大一 爛室友也有可能毀了你的一年 慎選吧 寶貝 我糙 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.169.37.126 ※ 編輯: orc1424 來自: 118.169.37.126 (12/10 19:00)
walm20:請問是不是跟我原文下面講的? 12/10 19:01
TonyQ:c跟java定義的ref 有一點落差. 12/10 21:49
sunneo:他傳ref的態度是call by value,也就是你無法改ref本身 12/10 22:37
sunneo:但你可以存取ref參照的內容 12/10 22:38
Lordaeron:這種年經文又出現了. 12/11 00:11
ninteen:三樓正解 12/11 04:20
ninteen:基本上呼叫f()時,JAVA把a變數的內容"複製"到f的b變數去 12/11 04:22
ninteen:更正,是把b變數的內容"複製"到f的c變數去 12/11 04:24
walm20:感謝~ 12/11 11:13
Lordaeron:照定義C 一樣沒有call by reference,拿C 來說嘴就有題了 12/11 13:13