空字符是不可能的,但空字符串是可能的

pjj*_*pjj -2 java

我们不能像这样创建空字符char ch = '';,这是可以理解的,因为 ASCII 中没有空字符。有 NULL 字符和白色字符,但这些不是空字符,所以char ch = '\0';是可能的,但不是char ch = '';.

现在,我们可以在 Java 中创建一个空字符串,而字符串只不过是一个字符数组,所以不知道如何存储空字符串?


编辑:

我同意每个人的看法,在 Java 中 String 不是字符数组,但最终存储字符串时会有字符出现,否则我会想知道字符串是如何存储的,我的意思是最后字符串中的每个字符都将被存储作为 BYTE,现在如何存储空字符串?

Ell*_*sch 5

JavaString 不是字符数组(也不是单个char,它是一个完整的原始类型)。它是一个对象类型,并包括一个长度。

JLS-10.9。字符数组不是String说(部分)

在 Java 编程语言中,与 C 不同,char 数组不是 a String,并且 aString和 of 数组都不char是由'\u0000'(NUL 字符)终止的。

一个String对象是不可变的,也就是说,它的内容永远不会改变,而数组的char元素是可变的。

我的意思是,字符串中的每个字符最后都会被存储为一个 BYTE,现在如何存储一个空字符串?

不,每个字符是2 bytesJava 教程:原始数据类型

char数据类型是单16位的Unicode字符。它的最小值为'\u0000'(或 0),最大值为'\uffff'(或 65,535,含)。

如果为空String则没有任何字符;一个空数组的长度为0

  • C 字符串不是 Java 字符串... C 字符串不是 Java 字符串。我认为很多人没有意识到语言在底层是非常不同的,即使它们具有相同的数据结构。即使是整数也不总是相同的。内存实现非常不同,Java 字符串比字符数组/C 字符串更抽象一点。Java 对语法糖也有点开放。(我不知道谁决定防御性地拒绝你的答案,也不知道为什么) (2认同)