为什么空字符串有效且空字符不是?我原以为空字符串不是字符串而是占位符.对于char来说相同,但是创建一个空char甚至不能编译.
我想知道为什么会发生以下情况 - 编译 -
String s = "";
Run Code Online (Sandbox Code Playgroud)
不编译 -
char c = '';
Run Code Online (Sandbox Code Playgroud)
Mar*_*tos 118
因为char代表单个字符,而''不是.字符串可以包含零个或多个字符,但字符不能是单个字符以外的任何字符.
Ste*_*n C 34
因为字符串文字表示可能由零个或多个字符组成的字符串,但是(有效)字符文字只表示一个字符.
char可以定义为可以存储0或1个字符的数据类型...
是.从理论上讲,它可以用这种方式定义.但请相信我,如果你仔细考虑所有问题(例如你如何代表一个空的char,应用程序将如何处理它等等),你会得出结论,这些好处很少,而且有很大的缺点.
无论如何,这样做仅仅是为了使String和char文字之间存在语法一致性将是完全疯狂的.您不会破坏语言的性能和/或语义,因此语法看起来不错.
对接受的答案的一个评论提出''应该意味着相同'\0'.但对此的反驳论点'\0'并不意味着没有人物.它表示一个值为零的字符.所以如果'' 实际上意味着一个字符就会产生误导.而且因为已经有一种方法可以表明这一点...... '\0'第二种表示它的方式是多余的.
如果某些新语言语法既误导又多余,则很难证明添加它.
在处理SoloBold的评论时,虽然可以定义一个字符类型来做到这一点,但它需要更多的空间.至少1位,更可能是16位,以避免尴尬的内存对齐问题.32位char类型是不可接受的......即使它确实解决了其他问题.
您可以将String视为一系列字符.拥有一个没有字符的空序列是有道理的,拥有一个不是字符的字符则不然.
也永远不会使用String s = new String("");,就String s = ""足够了.
| 归档时间: |
|
| 查看次数: |
4400 次 |
| 最近记录: |