Re: [問題] primitive與refernce的問題
※ 引述《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
推
07/02 12:02, , 1F
07/02 12:02, 1F
→
07/02 13:02, , 2F
07/02 13:02, 2F
→
07/02 13:03, , 3F
07/02 13:03, 3F
討論串 (同標題文章)