我的看法是,直到今天,那文字像"c"
創建String
對象。今天我聽說Java沒有爲單個字符串創建一個對象。這是正確的嗎?它是否將該文字存儲爲char
?的單字符字符串
的單字符字符串
回答
"c"
是String
文字。它代表String
,正如"foo"
代表String
。
沒有特殊處理單字符String
文字(甚至沒有0字母String
文字""
)。
誰告訴你,這是區別對待的是無論是。)錯誤或b。)談論不同的東西(有特殊處理庫,例如)。
"c"
將創建一個字符串。 'c'
將創建一個char
不,這是錯誤的。即使是""
,也會創建一個String
對象。 但是,如果您鍵入'c'
,則會得到一個字符而不是String
對象。
即使對於單個字符串,Java也會創建一個字符串實例。下面的打印java.lang.String
:
public class Test{
public static void main(final String[] args){
System.out.println("c".getClass().getName());
}
}
是的,它顯然確實返回字符串,因爲'「」'(雙引號)是字符串和''''(單引號)用於字符 – Woot4Moo
"c"
確實創建一個對象。但是,如果您在源代碼的某處再次分配文字,它將不會創建新對象,而是引用創建的第一個字符串對象。
例如:
String s1 = "abc"; //creates the String object
String s2 = "abc"; //references the same object as s1
S1和S2都被分配了相同的對象,和==會工作。
你可以在這裏閱讀更多:http://javatechniques.com/blog/string-equality-and-interning/
錯誤。 ==只有在你使用String.intern – Woot4Moo
@ Woot4Moo否的情況下才有效,這是真的。文字字符串是默認實現的。 – sfussenegger
@ Woot4Moo請參閱https://gist.github.com/1044768 – sfussenegger
也許什麼意思是,在發動機罩下方flyweights創建(如何說不上來這工作與Java,但我相信,這個概念是在一定程度上爲字符串employeed)
對於某些操作,即子字符串(..),subSequence(..)和trim(),其結果字符串將在引擎蓋下使用相同的char []。我不明白這可能會如何影響字符串文字。 – sfussenegger
String
存儲字符作爲一個char[]
,因此最有可能"c"
將被表示爲String
對象內new char[] { 'c' }
。
由於String
類是final
,這意味着在char c
字段中沒有存儲單字符字符串的子類。
另外,對於單字符String
到char
沒有自動裝箱/取消裝箱的概念 - 就文件而言,所以假定單字符字符串存儲類似於任何其他類型是安全的的字符串。
與編程看看源最多的事 - > java.lang.String中。
所有的字符串都是java.lang.String中的情況下,也沒有特殊的情況。每個java.lang.String都包含一個char []和一些整數來保存開始和結束索引。請注意,char []在Strign實例之間共享,例如在執行String.substring()時,原始char []未被克隆或複製,但共享但是開始/結束索引已更新。
- 1. 字符串到單詞的字符串[]
- 2. 單選字符串,字符串數組
- 3. 字符串的簡單字符輸出
- 4. 替換字符串的單個字符
- 5. 將字符串分割成單個字符字符串數組
- 6. 將字符串中的單詞連接成單個字符串
- 7. C++字符串單個字符
- 8. 字符的字符串* VS字符字符串[]
- 9. 如何比較字符與字符串中的單個字符?
- 10. 單獨字符串
- 11. C字符串字符串
- 12. C++字符串!=字符串
- 13. 字符串字符串
- 14. Java字符串[]字符串[]
- 15. 字符串到字符串
- 16. 字符串去除字符的字符
- 17. Java的轉換{字符串,字符串} []地圖<字符串,字符串[]>
- 18. Html.fromHtml Gmail發送的.sendMail(字符串,字符串,字符串,字符串)內
- 19. 字符串SomeLongString = JavaAPIMethodFor(字符串[]字符串,字符串分隔符)
- 20. 字符串的字符串,進去串
- 21. PHP字符的字符串
- 22. Android的字符串操作,字符串中的單獨的行
- 23. 將數字和字符串列表到單個字符串python
- 24. 創建構造函數的字符串字符串1,字符串字符串2,字符串STRING3,對象object1
- 25. Scala - 字符串到方形字符串的列表字符串
- 26. Scala的RDD [字符串]到RDD [字符串,字符串]
- 27. 的Perl:字符串中子字符串或子字符串中
- 28. 匹配字符串中的字符串以強調字符串
- 29. 字符串內部的Java字符串到字符串
- 30. 如何在字符串的字符串處插入字符串?
聽說過嗎?聽說哪裏? – bmargulies
這將是一個有趣的概念,將單字符字符串自動裝箱/取消裝箱到char字符...... – Nick
告訴告訴你,要閱讀Java語言規範中關於文字的部分。字符文字和字符串文字:http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#100960 –