空char不可能,但可以使用空字符串

时间:2016-05-08 22:41:37

标签: java

我们无法创建像此char ch = '';这样的空字符,这是因为ASCII中没有空字符。有空字符和白色字符,但这些字符不是空字符,因此char ch = '\0';是可能的,但不是char ch = '';

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

<小时/> 编辑:

我同意所有人在Java String中不是字符数组,但最后存储字符串会有字符进入图片,否则我会想知道字符串是如何存储的,我的意思是最后每个字符在字符串中将存储为BYTE,现在如何存储空字符串?

3 个答案:

答案 0 :(得分:4)

Java String 不是一个字符数组(也不是单个char,它是一个完整的基本类型)。它是一个Object类型,包含一个长度。

JLS-10.9. An Array of Characters is Not a String说(部分)

  

在Java编程语言中,与C不同,char数组不是StringStringchar数组都不会被'\u0000'终止(NUL角色)。

     

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

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

不,每个字符都是 2个字节The Java Tutorials: Primitive Data Types

  

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

如果是空String,那么不是任何字符;一个空数组的长度为0

答案 1 :(得分:4)

String肯定由char[](称为value的字段支持,但不在任何下情况意味着String完全等同于char[]。它们是两个不同的对象。

现在,有了这个,让我们用长度为零的字符串来推理我们所期待的。这就是我们确定长度的方式:

/**
 * Returns the length of this string.
 * The length is equal to the number of <a href="Character.html#unicode">Unicode
 * code units</a> in the string.
 *
 * @return  the length of the sequence of characters represented by this
 *          object.
 */
public int length() {
    return value.length;
}

需要注意的重要一点是,如果我们创建一个空字符串,我们的后备数组的长度必须为零。因此,创建空String的方法是在实例化时提供一个空的value数组。

答案 2 :(得分:0)

作为引用空String的{​​{1}}对象。是的,数组的长度可以为0,因为它们是知道元素数量的对象,而不仅仅是C或C ++中的奇特指针。

例如,你可以这样做:

char[]