Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么这段代码显示的错误是无效的unicode?_Java_Eclipse - Fatal编程技术网

Java 为什么这段代码显示的错误是无效的unicode?

Java 为什么这段代码显示的错误是无效的unicode?,java,eclipse,Java,Eclipse,println语句有注释,但unicode没有注释。为什么?unicode可以用\uCODE表示,而不是/uCODE表示。如果您的unicode是新行,并且您尝试在unicode之后编写某些内容,则可能会显示编译时错误。否则,内联unicode将在单行注释中进行注释。无需特别注释unicode //System.out.println("hii");'\uxxx' 编辑 当编译器启动时,它会用它的值替换所有unicode字符,包括 评论的特点 所以在上面的编译语句中,它变成了 //Compil

println语句有注释,但unicode没有注释。为什么?

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

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

当编译器启动时,它会用它的值替换所有unicode字符,包括 评论的特点

所以在上面的编译语句中,它变成了

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

Java允许您在源代码中使用Unicode。与许多其他语言不同,它允许您在任何地方这样做,当然包括注释。它还允许在标识符中使用它,因此您可以编写如下合法Java代码:

//System.out.println("hii");
Hello
变量名是完全合法的(尽管编码惯例不鼓励这样使用)

javac
而言,源代码是Unicode。问题是它可以用不同的编码来表示,一些编辑器不支持Unicode,而且在某些地方使用非ASCII文件会产生问题

因此,允许在代码中使用Unicode转义。这将使文件完全采用ASCII格式,尽管有Unicode格式的标识符或注释。可以用等效的Unicode转义替换代码中的任何字符。即使是像
这样的“普通”字符。例如,以下行:

    String हिन्दी = "Hindi";
可以写为:

String s = "123";
它将被正确地编译,不会出现任何问题。实际上,您可以用Unicode转义码编写整个程序,包括换行符。Java编译器根本不关心Unicode转义是在文本内部还是在源代码本身中

但结果是编译器需要首先解释Unicode转义,然后将源代码分解为标识符、运算符和注释等标记,然后检查语法等


这意味着,如果源代码中有非法的Unicode转义序列,即使它在注释中,也会被标记为错误,因为此时编译器甚至不知道它正在查看的代码的特定部分是注释。

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


您还应该使用“\0001”而不是“/0001”。

javac converts
\u
在执行任何其他操作(包括处理注释)之前进行转义。因此,当它看到:

\uxxx


它将此标识为无效的Unicode转义,并在出现错误时停止编译

哇,我很惊讶为什么javac不能把它理解为普通字符。嘿,实际上我想知道为什么它没有注释unicode?你可能想看看这个。
String s \u003d "123"\u003b