为什么Java要求char变量使用单引号?

为什么Java要求char变量使用单引号?,java,syntax,Java,Syntax,为什么Java要求char变量用单引号而不是双引号括起其中的任何内容?例如: char s = 's'; //This will not break vs: 我知道双引号主要用于字符串,但有没有具体的原因来解释为什么字符只使用单引号,并在输入双引号时中断 我试着做了一些研究,但唯一相关的是另一个SO,它指的是单引号和双引号之间的区别,而不是字符语法发展背后的推理。因为char和String是两种不同的类型,Java还应该如何知道您想要的是长度为1的字符还是字符串 例如,给定方法: public

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

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

我知道双引号主要用于字符串,但有没有具体的原因来解释为什么字符只使用单引号,并在输入双引号时中断


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

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

例如,给定方法:

public void foo(String s) { }
public void foo(char c) { }
电话呢

foo("a");

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

这是一个熟悉现代简易脚本语言的人写的问题,他的目标是使编程易于学习和快速键入


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


但它也允许您编写字符串s=“s”;如果你不关心效率。

因为语言就是这样定义的?我不确定这里有什么深刻的见解……也许是这样的,它类似于
c
:它与3.1和3.1f的双倍和浮动相同。必须有某种方法来标记差异,这就是我们所选择的方法。您使用单引号和字符文字,而不是字符变量。所以问题归结到为什么词汇语法是这样的?是的,你不能得到比这个更准确的答案。这很好地解释了它。。。除了区分字符和字符串的能力之外,我不确定Java开发背后是否还有其他特定的原因。@BuddhistBeast我认为这一点足够具体:)@rambocoder…这将大大降低任何使用
char
s的程序的速度。@rambocoder并不“难看和难读”;这是任何C/C++程序员(或任何基于C的语言编程人员)都会看到的一个正常且非常明显的字符串文本。第二个在基于C的语言中看起来很奇怪,第三个只是。。。我甚至不知道嗯。。。什么?这到底是怎么回答这个问题的?我想你误解了这个问题。BuddhistBeast并不是在问为什么
char
String
是两个不同的东西-他们在问为什么char文本只能用单引号创建,而String文本只能用双引号创建。“Java是一种为了解CPU底层功能的人设计的语言。”这有点道理,但也很幽默,考虑到JVM,虚拟机使编码更容易,但这并不意味着一个好的程序员可能无知。你在说什么?请将问题附在您的答案中!!!
foo("a");