【问题标题】:In Java, is a String an array of chars?在 Java 中,String 是一个字符数组吗?
【发布时间】:2013-12-13 10:37:44
【问题描述】:

我想知道String 是否是一个集合。我已经阅读了周围,但仍然很困惑。

【问题讨论】:

  • 不,不是。字符串是 String 类的对象。它有一个字符数组作为其实例成员之一,但它还有更多。

标签: java string


【解决方案1】:

不,字符串是String类的对象

String 类表示字符串。中的所有字符串文字 Java 程序,例如“abc”,被实现为这个的实例 类....

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

      字符串是String 类的对象,它也不是Collection。它是在 char 数组之上实现的。你可以在下面的代码sn-p中看到它:

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

            【解决方案6】:

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

            在内部,它们由 char 数组 表示,并带有 offsetlength(这允许创建轻量级子字符串,使用相同的 char 数组)。

            示例:['F','o','o','H','e','l','l','o','','W','o',' r','l','d'], offset=3, count=5 = "Hello".

            【讨论】:

              【解决方案7】:

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

              然而,在运行时的幕后发生了很多事情——JVM 拥有缓存字符串的完整集合,并且在其最原始的表示中,是的,字符串基本上是一个字符数组(意味着它是一堆指向字符表示的内存地址)。尽管如此,一旦你低于String 的定义,因为它被定义为作为一个类,你可以继续前进,直到你谈到你只是在谈论有组织的 1 和 0 的组合。

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

              【讨论】:

              • 不,我正在编写一些软件,突然吓坏了,我实际上不知道它是如何设置的。
              • 哈。我知道这种感觉。我实际上很喜欢你问这个问题只是因为你想知道它是如何工作的:-)
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2012-10-23
              • 2013-06-22
              • 2013-08-15
              • 2022-01-05
              • 2023-03-22
              • 2011-08-15
              相关资源
              最近更新 更多