为什么 new String("") 编译通过而 char c = '' 不通过?

54
为什么空字符串是有效的而空字符不是? 我本以为空字符串不是字符串,只是一个占位符。对于char同样如此,但创建一个空的char甚至无法编译。
我想知道的是为什么会出现以下情况 - 可以编译 -
String s = "";

无法编译 -

char c = '';

20
如果你的例子有编译通过,你会期望变量 c 具有什么值? - Gabe
15
事实证明,你不能拥有一个没有值的 char。就像 intdouble 一样,char 必须始终具有某个值。 - Gabe
4
如果需要一个特殊的“没有字符”值,你可以将一个Character对象设置为null。 - kapex
9
Java 不是 C++,不要用 new String("") 来初始化字符串,这会导致创建两倍的字符串。如果你想要一个空字符串,应该将它们初始化为 "",例如:String example = ""。 - DwB
3
ASCII码中的0可以表示为'\0' - Callum Rogers
显示剩余4条评论
13个回答

0

Char指的是单个字符,可以是字母、数字、标点符号、制表符、空格或类似的内容。


ASCII 0是NUL,一个单个字符。它确实存在于以NULL结尾的字符串中作为终止符。 - Chris Cudmore

0

字符串是一组字符,可以是0个或多个。因此空字符串是有效的-它们没有任何字符。但Char代表字符的原始类型,必须是一个有效的字符,''不是。


0
我认为你应该尝试了解空白字符/字符串和空字符/字符串之间的区别。空白字符/字符串指的是具有一些内容的字符/字符串,例如' '(空格)、'\t'等,而空字符/字符串则没有任何内容,可以看作是一个空容器。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接