Java中的字符串数组是否等效于String?

时间:2015-02-05 15:33:37

标签: java

是否在Java中等效于String的char数组?

我看到了这个:

  

Q3。为什么String有length()方法?

     

String的备份数据结构是char数组。无需定义每个应用程序都不需要的字段。与C不同,字符数组不是Java中的字符串。

source

但它没有明确解释清楚。

3 个答案:

答案 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。