Java '有什么用\u';如果我使用引号或不使用引号,为什么我的程序会打印不同的值?
在以下代码段中:Java '有什么用\u';如果我使用引号或不使用引号,为什么我的程序会打印不同的值?,java,Java,在以下代码段中: publicstaticvoidmain(字符串[]args){ int a=\u0030; System.out.println(a);//a int b='\u0030'; System.out.println(b);//b } 语句A正在打印0,而语句B正在打印48 为什么使用单引号会有区别 此外,如果将a的声明更改为: int a = \u0029; 为什么我会出错 Syntax error on token ")", invalid VariableInitial
publicstaticvoidmain(字符串[]args){
int a=\u0030;
System.out.println(a);//a
int b='\u0030';
System.out.println(b);//b
}
语句A正在打印0
,而语句B正在打印48
为什么使用单引号会有区别
此外,如果将a
的声明更改为:
int a = \u0029;
为什么我会出错
Syntax error on token ")", invalid VariableInitializer
在:
字符串\u0030
是源代码中的数字文本0
。这就好像你实际上输入了0
如果我在30以下和40以上使用任何数字,为什么会给出编译[错误]
使用\u0029时出现的异常是“令牌上的语法错误”)”,变量初始值设定项无效
字符0x30到0x39是数字0-9,当然是可以分配给int
的文本。其他不是有效的整数文本
您的编译错误示例:
int a = \u0029;
同:
int a = ); // clearly not valid!
回到您最初的示例,您的意思可能是:
int a = '\u0030'; // notice the single quotes
现在,您正在将字符文字指定给整数。现在您可以分配其他字符,而不仅仅是unicode0x30
-0x39
。请注意,整数将具有该字符的序数值。因此,在这种情况下,变量a
将是0x30或十进制48。打印相应的ASCII值时,您的期望值是多少?似乎正确<代码>030
。这里有什么让人困惑的?代码很好\u0030
是ASCII代码0如果你调用的代码表现得像设计的那样烦人,你将很难成为一名软件开发人员…@Reimeus:Means**'\u'**的意思是什么?如果我使用任何数字小于30而大于40,为什么它会进行编译。请你解释一下。弗兰克:意思是\u是用于表示java源文件中的unicode符号。仅此而已@弗兰克·威尔森:没错。它们可以出现在源代码中的任何位置,而不仅仅是字符串或字符文本。您可以将整个程序代码编写为unicode转义序列,但它的可读性不是很好!
int a = '\u0030'; // notice the single quotes