我们无法创建像此char ch = '';
这样的空字符,这是因为ASCII中没有空字符。有空字符和白色字符,但这些字符不是空字符,因此char ch = '\0';
是可能的,但不是char ch = '';
。
现在,我们可以在Java中创建一个空字符串,字符串只是一个字符数组,所以它让我想知道如何存储一个空字符串?
<小时/> 编辑:
我同意所有人在Java String中不是字符数组,但最后存储字符串会有字符进入图片,否则我会想知道字符串是如何存储的,我的意思是最后每个字符在字符串中将存储为BYTE,现在如何存储空字符串?
答案 0 :(得分:4)
Java String
不是一个字符数组(也不是单个char
,它是一个完整的基本类型)。它是一个Object类型,包含一个长度。
JLS-10.9. An Array of Characters is Not a String
说(部分)
在Java编程语言中,与C不同,char数组不是
String
,String
和char
数组都不会被'\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[]