2015-10-05 78 views
-2

字符串是一個對象。爲什麼可以像原始類型一樣初始化它:String str =「my string」;我期待通過使用構造函數來看初始化:new String(「my string」);作爲原始類型的Java字符串初始化

+0

[This](http://stackoverflow.com/questions/8046045/java-string-literal-pool-and-string-object)也可能有用。 –

回答

2

這只是java提供的簡化。另一種選擇是非常難看的。您可選擇的解決方案有一個簡單的邏輯錯誤:

new String("my string"); 

只是藏漢使用字符串字面簡單地"my string"。該真正選擇將使用byte[](不推薦),這看起來更糟糕是

new String(new char[]{'m','y',' ',...,'n','g'}); 

或者只是相同的例子。

+0

謝謝,所以基本上編譯器將「我的字符串」轉換爲char序列給我們? –

+0

@WildGoat不需要轉換,'String'字面上是Java中的一個'CharSequence',因爲這是'String'類實現的接口之一。 – azurefrog

0

你可以去javadocs

除非需要的原明確的複製,使用此構造是不必要的,因爲字符串是不可改變的。