2013-11-21 29 views
2

對不起,如果這個問題已經被問到或者它是否過時。將值分配給String類而不創建新實例

字符串是一個類。我們可以將值賦給String而不創建新的實例對象。

String someString = "Value";

這是如何工作的,而不用於字符串製作實例?是否可以創建用戶定義的類來直接分配值而不創建新對象?

+0

我想你的意思是,「like'String something =」Value「;'' –

+0

String =」Value「;將無法正常工作:) – Lucas

+0

@chris - 感謝您的糾正。 :-) – OneTwo

回答

3

看到這個interesting article

字符串真的特別

Java的設計人員決定保留原始類型爲面向對象的語言,而不是將所有東西都作爲對象,因此可以提高語言的性能。基元被存儲在調用堆棧中的 ,其需要更少的存儲空間並且更便宜地操作。另一方面,對象存儲在程序堆 中,這需要複雜的內存管理和更多的存儲空間。 由於性能原因,Java的字符串被設計爲介於 原語和類之間。


另外:

Java已經保持字符串文字 提供一種特殊的機制 - 在一個所謂的串公共池..

當你這樣做:

String myStr1 = "Hello"; 
String myStr2 = "Hello"; 

然後

myStr1 == myStr2,因爲他們都存儲在(閱讀文章)。

但是,如果你建立一個新的String對象

String myStr1 = new String("Hello"); 
String myStr2 = new String("Hello"); 

然後引用相等。

我強烈建議您訪問JLS。它說,字符串被視爲以不同的方式,就像那樣:)

0

字符串是一種特殊情況。 String文字創建於the string pool。在池中添加字符串後,如果聲明瞭具有相同值的另一個字符串,則引用將指向池中的相同字符串。

並回答你的問題,你不能創建用戶定義的類,不使用new。只有當您僅使用該類的靜態方法和字段,然後才使用 ClassName.StaticFieldOrMethod

相關問題