在Java中,字符串是字符数组吗?

在Java中,字符串是字符数组吗?,java,string,Java,String,我想知道字符串是否为集合。我读了很多书,但还是很困惑。不,字符串是类的对象 String类表示字符串。中的所有字符串文本 Java程序(如“abc”)是作为这种方法的实例实现的 班级 字符串表示UTF-16格式的字符串,其中 补充字符由代理项对表示(请参见 字符类中的部分Unicode字符表示法 (更多信息)。索引值指的是字符代码单位,因此 补充字符使用字符串中的两个位置 不,它不是一个集合,因为它没有实现接口 从概念上讲,它是一个不可变的字符序列(并实现接口) 在内部,String类可能会使用

我想知道
字符串是否为集合。我读了很多书,但还是很困惑。

不,字符串是类的对象

String类表示字符串。中的所有字符串文本 Java程序(如“abc”)是作为这种方法的实例实现的 班级

字符串表示UTF-16格式的字符串,其中 补充字符由代理项对表示(请参见 字符类中的部分Unicode字符表示法 (更多信息)。索引值指的是字符代码单位,因此 补充字符使用字符串中的两个位置


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

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


在内部,
String
类可能会使用字符数组,尽管我很确定规范没有强制要求这样做。

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

public final class String implements 
        java.io.Serializable, Comparable<String>, CharSequence
    {           
    private final char value[];
公共最终类字符串实现
java.io.Serializable,可比较,CharSequence
{           
私有最终字符值[];

不,它不是数组或集合。但是,如果您需要一个字符数组,并且您有一个字符串,那么有一个方便的方法,即:您可以像这样使用它

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

String
类只是一个允许您创建字符串对象的类。与所有类一样,它使用自己的方法简化了这些对象的使用。 char数组是字符串,但其方法与数组或数组元素相关

例如,如果您想在类字符串的字符串中查找字符的位置,那么可以使用名为IndexOf的方法。 但是,如果要在字符数组中查找字符,则必须使用循环手动执行。

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

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


示例:[F'、'o'、'o'、'H'、'e'、'l'、'l'、'o'、'W'、'o'、'r'、'l'、'd'],偏移量=3,计数=5=
“Hello”
不,字符串是一个不可变的字符字符串,类直接扩展了
对象,并且没有实现任何
集合
接口。实际上,这是基本答案

然而,在运行时,有很多事情是在幕后进行的——JVM持有一整套缓存字符串,在其最原始的表示形式中,是的,字符串基本上是一个字符数组(这意味着它是一组指向字符表示形式的内存地址)但是,一旦你深入到
String
作为一个类的定义之下,你就可以一直往下走,直到你说到的是1和0的有组织的组合


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

不是。字符串是f类字符串。它的实例成员中有一个字符数组,但它也有很多字符。不,我正在编写一些软件,突然被吓了一跳,因为我不知道它是如何设置的。哈。我知道这种感觉。我真的很喜欢你问这个问题,因为你想知道它是如何工作的:-)