Java 注释中unicode转义序列的行为
根据Cay Horstmann的“Core Java Vol.I”: 因此,以下代码不应起作用:Java 注释中unicode转义序列的行为,java,unicode,Java,Unicode,根据Cay Horstmann的“Core Java Vol.I”: 因此,以下代码不应起作用: class Test { public static void main(String[] arg2) { // \u00A0 is a new line char alpha = 'a'; System.out.println("abc" + alpha); } } 但它是有效的。为什么?该代码之所以有效,是因为该字
class Test
{
public static void main(String[] arg2)
{
// \u00A0 is a new line
char alpha = 'a';
System.out.println("abc" + alpha);
}
}
但它是有效的。为什么?该代码之所以有效,是因为该字符是不间断空格,不是新行字符
最有可能发生的情况是,作者输入了一个打字错误,实际上是要打字,这是一个换行字符,并且确实如预期的那样中断。代码工作,因为该字符是一个不中断的空格,不是一个换行符
最有可能发生的情况是,作者输入了一个打字错误,实际上是要打字,这是一个换行字符,确实如预期的那样中断。事实上,代码按照所示进行编译,但如果
\u00A0
更改为\u000A
,则不会编译。是的,您是正确的。这是打字错误,当我写\u000A时,它会起作用。谢谢。但是如果我们像这样写://\n是一个新行。应该是错误吗?@nicksilion,这很好,因为“abc\n”
是字符串,而不是注释。注释不受与字符串相同的规则约束。这实际上与字符串转义序列没有什么关系。\u
符号不是字符串转义;它是一种通用转义符号,允许用于整个文件中的任何字符,包括换行符和注释内容。编译器在评估源代码之前会处理此类转义<代码>字符串s=“abc”代码>和\u0053\u0074\u0072\u0069\u006e\u0067\u0073\u003d\u002abc\u0022
是完全相同的代码。事实上,代码按照所示进行编译,但如果\u00A0
更改为\u000A
,则不会编译。是的,您是正确的。这是打字错误,当我写\u000A时,它会起作用。谢谢。但是如果我们像这样写://\n是一个新行。应该是错误吗?@nicksilion,这很好,因为“abc\n”
是字符串,而不是注释。注释不受与字符串相同的规则约束。这实际上与字符串转义序列没有什么关系。\u
符号不是字符串转义;它是一种通用转义符号,允许用于整个文件中的任何字符,包括换行符和注释内容。编译器在评估源代码之前处理这种转义<代码>字符串s=“abc”代码>和\u0053\u0074\u0072\u0069\u006e\u0067\u0073\u003d\u002abc\u0022代码>是完全相同的代码。