【问题标题】:Why does Java require the char variable to use single quotes?为什么 Java 要求 char 变量使用单引号?
【发布时间】:2014-01-04 23:05:44
【问题描述】:

为什么 Java 要求 char 变量用单引号而不是双引号将其中的任何内容括起来?一个例子:

char s = 's'; //This will not break

对比:

char s = "s"; //This will break

我了解双引号主要用于字符串,但是否有特定原因说明为什么将字符构建为仅使用单引号并在输入双引号时中断?

我试图做一些研究,但唯一相关的是另一个 SO Question,它指的是单引号和双引号之间的区别,而不是 char 语法发展背后的推理。

【问题讨论】:

  • 因为语言是这样定义的?我不确定这里有什么深刻的见解......
  • 也许这样就类似于c:stackoverflow.com/questions/3683602/…
  • 双精度和浮点数与 3.1 和 3.1f 相同。必须有某种方式来标记差异,这就是我们选择的方式
  • 您将单引号与 char literals 一起使用,而不是与 char 变量一起使用。所以问题归结为为什么词法语法是这样的?

标签: java syntax


【解决方案1】:

因为charString 是两种不同的类型,Java 还应该如何知道您想要长度为 1 的字符或字符串?

例如,给定方法:

public void foo(String s) { }
public void foo(char c) { }

还有电话

foo("a");

如果字符可以用双引号括起来,Java 怎么知道调用哪个方法?

【讨论】:

  • 是的,没有比这更准确的答案了。
  • 这几乎解释了它......我不确定除了区分字符和字符串的能力之外,Java 开发背后是否还有其他具体原因。
  • @BuddhistBeast 我认为这个已经足够具体了:)
  • @rambocoder ...这会大大减慢任何使用chars的程序。
  • @rambocoder 这不是“丑陋且难以阅读”;这对于读取任何 C/C++ 程序员(或任何基于 C 的语言程序员)都会看到的字符串文字是很正常且非常明显的。第二个在基于 C 的语言中看起来很奇怪,而第三个只是......我什至没有
【解决方案2】:

这是一个习惯于现代简单脚本语言的人写的问题,其目标是使编程易于学习和快速输入。

Java 是为了解 CPU 底层功能的人设计的语言。在低级语言(汇编、C、Java 等)的世界中,字符是整数(UTF 可能需要多个 int),而字符串是整数数组。通过允许程序员定义确切的变量类型,Java 允许您编写更高效的代码。

但它也允许你写 String s = "s";如果您不关心效率。

【讨论】:

  • 嗯嗯……什么?这如何准确回答这个问题?
  • 我认为您误解了这个问题。佛教野兽没有问为什么charString 是两个不同的东西——他们问为什么char 文字只能用单引号创建,而字符串文字只能用双引号创建。
  • “Java 是一种语言,适合那些知道 CPU 在下面做什么的人。”考虑到 JVM,这有点道理,但也很幽默。
  • 虚拟机让编码更容易,但这并不意味着一个好的程序员可能是无知的。
  • 你在说什么?请在回答中附上问题!!!
猜你喜欢
  • 1970-01-01
  • 2013-10-26
  • 1970-01-01
  • 2020-12-13
  • 1970-01-01
  • 2018-07-01
  • 2019-11-04
  • 1970-01-01
  • 2012-04-06
相关资源
最近更新 更多