//System.out.println("hii");'\uxxx'
对println语句进行了注释,但未对unicode进行评论。为什么?
答案 0 :(得分:4)
Java允许您在源代码中使用Unicode。与许多其他语言不同,它允许您在任何地方这样做,当然包括评论。它也允许在标识符中使用,因此您可以编写合法的Java代码:
String हिन्दी = "Hindi";
变量名完全合法(尽管编码惯例不鼓励这样使用)。
就javac
而言,源代码是Unicode。问题是它可以用不同的编码表示,有些编辑器不支持Unicode,并且有些地方使用非ASCII文件会产生问题。
因此允许在代码中使用Unicode转义符。尽管在Unicode中有标识符或注释,但这将使文件完全以ASCII格式存在。您可以使用等效的Unicode转义替换代码中的任何字符。甚至像;
这样的“普通”字符。例如,以下行:
String s = "123";
可以写成:
String s \u003d "123"\u003b
它将被正确编译,没有任何问题。实际上,您可以在Unicode转义中编写整个程序,包括换行符。 Java编译器根本不关心Unicode转义是在文字内还是在源本身内。
但结果是编译器需要首先解释Unicode转义 ,然后才将源分解为标识符,运算符和注释等标记,然后检查语法等。
这意味着如果您的源中有非法的Unicode转义序列,它将被标记为错误,即使它在注释中,因为此时编译器甚至不知道它所看到的代码的特定部分是注释。
答案 1 :(得分:2)
Unicode可以用\uCODE
表示,而不是/uCODE
。如果您的unicode是新行,并且您尝试在unicode之后编写内容,则可能会显示编译时错误。否则内联unicodes会在单行注释中注释。不需要专门注释unicode。
//Compilation Error
//System.out.println("hii"); \u000d Hello
修改强>
当编译器启动时,它将所有unicode字符替换为其值,包括 评论的人物。
因此,在编译过程中的上述语句中,它变为。
//System.out.println("hii");
Hello
答案 2 :(得分:2)
创建Java语言规范时,接受Unicode标准,并将char原语定义为16位数据类型,十六进制范围内的字符从 0x0000到0xFFFF。
此外,您应该使用" \ 0001" 而不是" / 0001"。
答案 3 :(得分:1)
javac在执行任何其他操作之前转换\u
转义符,包括处理注释。所以当它看到:
\uxxx
它将此标识为无效 Unicode转义并停止编译并显示错误。