一本名著证实java字符串是一个数组?

我的大卫·帕特森 (John Hennessy) 的“计算机组织和设计”一书在“自我检查”部分中有一个问题,该问题证实了“字符串只是 C 和 Java 中单维字符数组的非正式名称”这一说法。是真的。

我相信在 C 中就是这种情况,但是在 Java 中,这是完全错误的。我一直在这本书的勘误版本中搜索,但一无所获。

我错了吗?我基本上需要帮助。


叮当猫咪
浏览 167回答 3
3回答

达令说

将 a Stringas 视为围绕char[]数组构建的 Java 概念。它是一个包含char[]数组并提供一堆有用方法的类。public final class String&nbsp; &nbsp; implements java.io.Serializable, Comparable<String>, CharSequence {&nbsp; &nbsp; /** The value is used for character storage. */&nbsp; &nbsp; private final char value[];&nbsp; &nbsp; ...}字符串只是 C 和 Java 中单维字符数组的非正式名称。我觉得这个说法不准确。String是一个基本的、众所周知的 JDK 类,所以我们不能说它只是一个“非正式名称”。我设法找到了“Java 中的字符和字符串”一章(第 2.9 章)和 OP 所指的“检查自己”块。作者广泛地描述了 Java 中的字符串,只是说Java 使用 Unicode 作为字符然后字符串是一个标准的 Java 类,具有特殊的内置支持和用于连接、比较和转换的预定义方法。与 C 不同,Java 包含一个给出字符串长度的词,类似于 Java 数组。从这些方面,我们无法得出合理的结论。

大话西游666

这取决于。从实用的角度来看,这本书是正确的。一个 Java 字符串,最后代表一个字符值数组。但请注意,这是一个实现细节!String 类可以在内部使用 Character 值的链接列表。这可能非常低效,但仍有可能。使用字符数组是自然的选择,但不是唯一的选择。但从编译器构造的角度来看,这是两种不同的类型。Java 中的字符串派生自 Object。String 类型与 char[] 或 Character[] 类型完全不同。他们甚至不“相关”。所以这本书有点对,(恕我直言)有点明显错误。

慕娘9325324

这取决于你的观点。是的,字符串是数组 - 一个实现的角度在你的源代码中java.lang.String可以清楚地发现:public final class Stringimplements java.io.Serializable, Comparable<String>, CharSequence{/** The value is used for character storage. */&nbsp; &nbsp; private final char value[];//...不,字符串不是数组 - 设计观点但是,从设计的角度来看,没有一个好的模型设计者会选择继承(is-a 关系)层次结构,例如字符串扩展数组或在 UML 中:当然,JavaString类的设计者也考虑到了这一点,并让String继承自Object(请参阅上面的代码);与数组没有 is-a-relationship。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java