把Java声明搞砸了
为什么java常量有奇怪的行为(Unicode字符和正常表示)。。我的意思是看下面的例子。 注意:所有代码都是用java语言编写的把Java声明搞砸了,java,unicode,character,declaration,Java,Unicode,Character,Declaration,为什么java常量有奇怪的行为(Unicode字符和正常表示)。。我的意思是看下面的例子。 注意:所有代码都是用java语言编写的 char a = '\u0061'; //This is correct char 'a' = 'a'; //This gives compile time error char \u0061 = 'a'; //this is correct no error ch\u0061r a = 'a'; //This too works ch'a'r a
char a = '\u0061'; //This is correct
char 'a' = 'a'; //This gives compile time error
char \u0061 = 'a'; //this is correct no error
ch\u0061r a = 'a'; //This too works
ch'a'r a = 'a'; // This really is confusing compile time error
为什么最后一个声明不起作用而ch\u0061r a='a'代码> Works/< p> > p>不能在标识符的中间放置文字(<代码> a)/>代码>
线路
char 'a' = 'a';
不编译,因为没有标识符,并且不能将一个文本分配给另一个文本
但是,Unicode是允许的。这是很难阅读的:-) < p>不能在标识符的中间放置文字(<代码> a '/COD>)。< /P>
线路
char 'a' = 'a';
不编译,因为没有标识符,并且不能将一个文本分配给另一个文本
但是,Unicode是允许的。这很难理解:-)您不能在标识符中放置文字字符,'a'
。但是,您可以使用unicode,\u0061
。您不能在标识符中放置文字字符,'a'
。不过,您可以使用unicode,\u0061
。这一点也不令人困惑。你随机地散布单引号,并期望它们是无关的。在第一种情况下,将单个字符\u0061
的值赋给char
变量。然后尝试使用字符文字作为变量名,这是行不通的。然后使用Unicode格式的字符(不带引号)作为变量名,这是可以的。也许您将Java的报价规则与shell混淆了?这一点也不混淆。你随机地散布单引号,并期望它们是无关的。在第一种情况下,将单个字符\u0061
的值赋给char
变量。然后尝试使用字符文字作为变量名,这是行不通的。然后使用Unicode格式的字符(不带引号)作为变量名,这是可以的。也许您将Java的报价规则与shell混淆了?您可以在
Unicode复合字符不同于分解字符
你可以从中找到原因
Unicode复合字符不同于分解字符
@Subhrajyoti Majumder感谢您的编辑。@Subhrajyoti Majumder感谢您的编辑。.标识符和文字在几乎所有常用语言中都是两种不同的东西。在Java中,它们不能混合。这是Java的规则:-@Level29AccessUnicode复合字符与分解字符不同
标识符和文字在几乎所有常用语言中都是两种不同的东西。在Java中,它们不能混合。这是Java的规则:-)@Level29AccessUnicode组合字符与分解字符不同