【发布时间】:2013-12-13 10:37:44
【问题描述】:
我想知道String 是否是一个集合。我已经阅读了周围,但仍然很困惑。
【问题讨论】:
-
不,不是。字符串是 String 类的对象。它有一个字符数组作为其实例成员之一,但它还有更多。
我想知道String 是否是一个集合。我已经阅读了周围,但仍然很困惑。
【问题讨论】:
不,字符串是String类的对象
String 类表示字符串。中的所有字符串文字 Java 程序,例如“abc”,被实现为这个的实例 类....
String 表示 UTF-16 格式的字符串,其中 补充字符由代理对表示(参见 Character 类中的 Unicode Character Representations 部分 更多信息)。索引值指的是字符代码单元,因此 补充字符在字符串中使用两个位置。
【讨论】:
不,它不是一个集合,因为它没有实现Collection<E> 接口。
从概念上讲,它是一个不可变的字符序列(并实现了CharSequence 接口)。
在内部,String 类可能使用字符数组,尽管我很确定规范没有强制要求。
【讨论】:
字符串是String 类的对象,它也不是Collection。它是在 char 数组之上实现的。你可以在下面的代码sn-p中看到它:
public final class String implements
java.io.Serializable, Comparable<String>, CharSequence
{
private final char value[];
【讨论】:
不,它不是数组或集合。但是,如果您需要一个字符数组并且您有一个字符串,那么有一种方便的方法 - 即String.toCharArray();你可以这样使用它
// Prints the String "Hello, World!" as a char[].
System.out.println(Arrays.toString("Hello, World!".toCharArray()));
【讨论】:
String Class 只是一个允许您创建字符串对象的类。像所有类一样,它使用自己的方法可以轻松使用这些对象。
char 数组是一个字符串,但它的方法是相对于数组或数组元素的。
因此,例如,如果您想在 String 类的字符串中查找字符的位置,那么您可以使用名为 IndexOf 的方法。 但是如果你想在一个 char 数组中找到一个字符,那么你就必须使用循环手动完成。
【讨论】:
字符串是表示字符序列的不可变对象(CharSequence是String实现的接口之一)。
字符数组和字符集合的主要区别:字符串不能被修改,不能(忽略反射)添加/删除/替换字符。
在内部,它们由 char 数组 表示,并带有 offset 和 length(这允许创建轻量级子字符串,使用相同的 char 数组)。
示例:['F','o','o','H','e','l','l','o','','W','o',' r','l','d'], offset=3, count=5 = "Hello".
【讨论】:
不,String 是一个不可变的字符串,并且该类直接扩展了Object,并且没有实现任何Collection 接口。真的,这是基本答案。
然而,在运行时的幕后发生了很多事情——JVM 拥有缓存字符串的完整集合,并且在其最原始的表示中,是的,字符串基本上是一个字符数组(意味着它是一堆指向字符表示的内存地址)。尽管如此,一旦你低于String 的定义,因为它被定义为作为一个类,你可以继续前进,直到你谈到你只是在谈论有组织的 1 和 0 的组合。
我在这里猜测,但我想你提出这个问题是因为你正在研究这个问题,并且一位讲师说过 String 是一个字符数组。虽然在技术上是正确的,但这确实令人困惑,因为这两个概念存在于完全不同的抽象级别。
【讨论】: