我的大卫·帕特森 (John Hennessy) 的“计算机组织和设计”一书在“自我检查”部分中有一个问题,该问题证实了“字符串只是 C 和 Java 中单维字符数组的非正式名称”这一说法。是真的。
我相信在 C 中就是这种情况,但是在 Java 中,这是完全错误的。我一直在这本书的勘误版本中搜索,但一无所获。
我错了吗?我基本上需要帮助。
叮当猫咪
浏览 167回答 3
3回答
达令说
将 a Stringas 视为围绕char[]数组构建的 Java 概念。它是一个包含char[]数组并提供一堆有用方法的类。public final class String implements java.io.Serializable, Comparable<String>, CharSequence { /** The value is used for character storage. */ private final char value[]; ...}字符串只是 C 和 Java 中单维字符数组的非正式名称。我觉得这个说法不准确。String是一个基本的、众所周知的 JDK 类,所以我们不能说它只是一个“非正式名称”。我设法找到了“Java 中的字符和字符串”一章(第 2.9 章)和 OP 所指的“检查自己”块。作者广泛地描述了 Java 中的字符串,只是说Java 使用 Unicode 作为字符然后字符串是一个标准的 Java 类,具有特殊的内置支持和用于连接、比较和转换的预定义方法。与 C 不同,Java 包含一个给出字符串长度的词,类似于 Java 数组。从这些方面,我们无法得出合理的结论。
这取决于你的观点。是的,字符串是数组 - 一个实现的角度在你的源代码中java.lang.String可以清楚地发现:public final class Stringimplements java.io.Serializable, Comparable<String>, CharSequence{/** The value is used for character storage. */ private final char value[];//...不,字符串不是数组 - 设计观点但是,从设计的角度来看,没有一个好的模型设计者会选择继承(is-a 关系)层次结构,例如字符串扩展数组或在 UML 中:当然,JavaString类的设计者也考虑到了这一点,并让String继承自Object(请参阅上面的代码);与数组没有 is-a-relationship。