看板 java 關於我們 聯絡資訊
※ 引述《crazykai (Gooday)》之銘言: : 最近在看Head First Java,想不到才看到第三章就卡住了 : 我的疑問是這樣的 : primitive因為是以位元組表達實際變數值,因此不用另外宣告實體 : 而物件的參考變數只是類似指標作用,因此還需宣告實體 : 但String是個物件呀,為什麼我們不會寫 : String name = new String(); : name = "crazykai" : 請大大們有空指導一下吧 <(_ _)> 對於 reference 來說, 你可以想成 = 是指把該 reference 指向某 obj instance. 第二句是 name 這 reference 指向 "crazykai" 這 個 string literal 而已. string literal 本身也是一個 object. 你上面兩句實際是發生這樣的事 (String name= new String()) 1) 生成 String() +--- String -----+ +----------------+ | | [name] +----------------+ 2) name = 該新 String obj +--- String -----+ +----------------+ --->| | [name] --/ +----------------+ (name = "crazykai") 3) name 指外另一 string object +--- String -----+ +----------------+ | | [name] -- +----------------+ \ \ +--- String -----+ \-------> +----------------+ | "crazykai" | +----------------+ 和你認知的沒有分別. 只是 String object 生成的方法 不必一定要乖乖寫 new String(), 而是單純寫 "balblabal" 就等如是 new 了一個 String instance. (其實這樣說不太正確, 因為 string literal 的情況, 是在 程式一開始就已經存在那些 string literal 的 String obj instance, 而不是用的那刻才 new. 不過簡化一點來說你應 該會比較容易理解) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 202.155.236.82
crazykai:謝謝大大的詳解 那我可以簡單的理解它為ㄧ種建構子嗎 07/02 12:02
adrianshum:理解成建構子不太好. 你就當那是之前已經建立好的一個 07/02 13:02
adrianshum:obj instance 07/02 13:03