为什么此代码显示错误无效的Unicode?

//System.out.println("hii");'uxxx'

println语句被评论,但unicode没有评论。为什么?


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转义序列, 即使它在注释中 ,它也会被标记为错误,因为此时编译器甚至不知道它正在查找的代码的特定部分at是一条评论。


Unicode可以用uCODE而不是/uCODE 。 如果您的unicode是新行,并且您尝试在unicode之后编写某些内容,则可能会显示编译时间错误。否则内联unicode将在单行注释中进行注释。无需专门评论unicode。

//Compilation Error
//System.out.println("hii"); u000d Hello

编辑

编译器启动时,它会将所有unicode字符替换为其值,包括注释的字符。

所以在编译过程中的上述语句中就变成了。

//System.out.println("hii");
Hello

当创建Java语言的规范时,Unicode标准被接受并且char原语被定义为16位数据类型,其字符在十六进制范围内,从0x0000到0xFFFF。

你也应该使用“ 0001”而不是“/ 0001”。

链接地址: http://www.djcxy.com/p/20573.html

上一篇: Why does this code showing error invalid unicode?

下一篇: Why does Java allow control characters in its identifiers?