在Java中,String是一个字符数组吗?

我想知道,如果String是一个集合。 我已经阅读过,但仍然很困惑。

字符串是表示字符序列的不可变对象CharSequence是String实现的接口之一)。 char数组和chars集合的主要区别:String无法修改,无法(忽略reflection)添加/删除/替换字符。

在内部,它们由具有偏移量长度char数组 表示 (这允许使用相同的char数组创建轻量级子串)。

例如:[‘F’,’o’,’o’,’H’,’e’,’l’,’l’,’o’,”,’W’,’o’,’r’, ‘l’,’d’],偏移= 3,计数= 5 = "Hello"

strings是String类的对象,它也不是Collection 。 它在char数组之上实现。 您可以在下面的代码段中看到它:

 public final class String implements java.io.Serializable, Comparable, CharSequence { private final char value[]; 

不,它不是一个集合,因为它没有实现Collection接口。

从概念上讲,它是一个不可变的字符序列(并实现了CharSequence接口)。

在内部, String类可能使用字符数组,但我很确定规范并没有强制要求。

不,字符串是String类的对象

String类表示字符串。 Java程序中的所有字符串文字,例如“abc”,都是作为此类的实例实现的….

String表示UTF-16格式的字符串,其中补充字符由代理项对表示 (有关更多信息,请参阅Character类中的Unicode字符表示forms一节)。 索引值是指char代码单元,因此补充字符在String中使用两个位置。

不,它不是数组或集合。 但是,如果你需要一个char数组并且你有一个String,那么有一个方便的方法 – 即String.toCharArray() ; 你可以像这样使用它

  // Prints the String "Hello, World!" as a char[]. System.out.println(Arrays.toString("Hello, World!".toCharArray())); 

不, String是一个不可变的字符串,该类直接扩展了Object ,并没有实现任何Collection接口。 真的,这是基本的答案。

然而,在运行时中有很多内容 – 有一整套由JVM保存的缓存字符串,并且在最原始的表示中,是的,String基本上是一个字符数组(意思是它是一堆内存)指向字符表示的地址)。 仍然,一旦你低于String的定义,因为它被定义为一个类 ,你可以继续前进,直到你刚刚谈到你只是在谈论有组织的1和0的组合。

我在这里猜测,但我想你提出了这个问题,因为你正在研究这个问题,一位教练说了一些String是一个字符数组。 虽然技术上是正确的,但这确实令人困惑,因为这两个概念存在于完全不同的抽象层次。

String Class只是一个允许您创建字符串对象的类。 像所有类一样,使用其拥有方法可以轻松使用这些对象。 char数组是一个字符串,但它的方法是相对于数组或数组的元素。

因此,例如,如果要在类String的字符串中查找carácter的位置,则使用名为IndexOf的方法。 但是如果你想在char数组中找到一个字符,那么你必须使用循环手动完成。