2014-01-16 53 views

回答

10

因爲StringBuilder是一個對象,它需要被構造。你收到錯誤,因爲字符串是而不是 a StringBuilder

字符串是一個特殊的,它被設計爲在原始和類之間。您可以將字符串直接分配給String變量,而不是調用構造函數來創建String實例。

interesting topic

的Java的設計者決定在 面向對象的語言,保留原始類型,而不是讓所有的對象,所以 ,以提高語言的表現。基元被存儲在調用堆棧中的 ,其需要更少的存儲空間並且更便宜地操作。另一方面,對象存儲在程序堆 中,這需要複雜的內存管理和更多的存儲空間。

出於性能方面的原因,Java的字符串被設計成一個 原始和類之間是英寸

更多讀數:

+0

謝謝!所以這是因爲'String'在* Java *中是特殊的,所以'='操作符可以用來構造一個String對象?你能給我一個URL鏈接或圖書參考介紹更多關於在Java中的字符串? –

+0

@chainro不客氣:)我剛剛發佈了一個可能對你有幫助的鏈接。 – Maroun

+2

-1字符串也是一個不同的對象,它不可變,並且支持重載的「=」運算符。不多不少。 – spectre

10

"xxx"由語言*的說明書中定義爲a String literal一個字符串對象。所以,你可以寫:

String s = "abc";  //ok we got it 
Object o = "abc";  //a String is an Object 
CharSequence cs = "abc"; //a String is also a CharSequence 

但字符串不是一個StringBuilder ...

*從JLS名言: 「一個字符串文字總是String類型的」

1

這工作

String sb = "asd"; 

,因爲你必須字面被分配給一個變量引用一個字符串的引用。即類型是相同的。

你不能這樣做隱式地轉換類型或用Java中的賦值來改變對象。

Object o = "asd"; 

因爲字符串是對象而工作。

0

字符串不僅是一個類,但""中的任何內容都是JVM字符串和字符串對象是指該字符串。
所以String str="hello"的作品。

但是StringBuilder和其他數以千計的對象並不像String那樣特別,所以它們不會被同樣初始化。

0

Java中的String是一個特殊類型類U可以定義對象的字符串像

String s = "xyz"; 

String s = new String("XYZ"); 

StringBuilde ** r是就像一個**正常類,當你必須爲它創建一個對象時,你應該使用新的關鍵字(構造對象)。 HTH

相關問題