我的看法是,直到今天,那文字像"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 –