是否在Java中等效于String的char数组?
我看到了这个:
Q3。为什么String有length()方法?
String的备份数据结构是char数组。无需定义每个应用程序都不需要的字段。与C不同,字符数组不是Java中的字符串。
(source)
但它没有明确解释清楚。
答案 0 :(得分:5)
An array of characters is not a String
,原因有一个:数组是可变的,而String
显然不是。支持String
的阵列也不会以空值终止。
绝对是backed by a char[]
,但这并不意味着两个对象是等价的。
答案 1 :(得分:4)
java.lang.String类型提供标准化API,并且还保证不能更改现有String对象的值;又名它是不可变的。没有必要知道 String类如何实际存储字符串值(事实上它已经经历了多年来实际实现的各种变化 - 而实际上有一个char []引擎盖;这只是一个选择的实现,可以交换其他任何东西而不用更改String类的可见功能。 / p>
尽管char []数组只是一个低级原始数据结构,但数组的任何索引处的值都可以随时更改。 char []也没有提供专门的API(例如没有subString-method等)。字符数组只提供原始存储空间空间,强制执行非常少的语义。
因此,除了两者都可以代表一系列字符这一事实外,它们的目的并不相同,而且它们肯定不会互换或相同的。
答案 2 :(得分:0)
他们绝对不相同。
Java中的字符串具有数据类型String。并且一组字符的数据类型为“字符数组”。
像Makoto所说,String是不可变的,但数组不是。所以我们通常用StringBuilder构造一个String。