作者adrianshum (Alien)
看板java
标题Re: [问题] primitive与refernce的问题
时间Thu Jul 2 11:22:49 2009
※ 引述《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
1F:推 crazykai:谢谢大大的详解 那我可以简单的理解它为ㄧ种建构子吗 07/02 12:02
2F:→ adrianshum:理解成建构子不太好. 你就当那是之前已经建立好的一个 07/02 13:02
3F:→ adrianshum:obj instance 07/02 13:03