- 註冊時間
- 2007-12-23
- 最後登錄
- 2016-12-14
- 主題
- 查看
- 積分
- 30
- 閱讀權限
- 20
- 文章
- 70
- 相冊
- 0
- 日誌
- 0
狀態︰
離線
|
講得真精闢,
不過在實務上,字串很少被程式員直接new起來使用
而是直接用Literal Values的型式,
ex: String hello = "Hello World";
因為字串是不可變(immutable)物件(即字串物件一旦生成就不可再改變字串的內容),
所以字串物件總是可以被安全的共用,
故應該避免使用如下的statement: String hello = new String("Hello World");
產生多個一模一樣的不可變物件而不複使用已存在的物件是
浪費記憶體,耗系統資源(物件在創建時成本比較高)而沒有意義的
所以JVM會有"字串池"以達到字串共享減少系統開銷的機制是很合理的。
或許有人會說字串是可改變的:
String str1 = "hello";
str1 = "world";
乍看之下,str1真的從字串"hello"變成字串"world"
但是說穿了,str1只是一個參考到字串物件的reference,
原本指向字串物件 "hello",後來改指向"另一個"字串物件"world"罷了,
"hello"物件還是"hello"物件,從建創到結束前其值都不會改變(並無法讓"hello"物件的值變成"hello world")
不過原作的範例有助於初學者對字串物件的解理(也是該週報的初衷)。 |
|