java 为何 无效_关于java:为什么这段代码显示错误无效的unicode?

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

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

你可能想看看这个问题。

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

String ?????? ="Hindi";

变量名是完全合法的(尽管编码约定不鼓励这样的使用)。

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

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

String s ="123";

可以写为:

String s \u003d"123"\u003b

它将被正确地编译,没有任何问题。实际上,您可以用Unicode转义符(包括换行符)编写整个程序。Java编译器根本不关心Unicode是否在文本或源本身中。

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

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

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

此外,还应使用" 001"而不是"/0001"。

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

//Compilation Error

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

编辑

当编译器启动时,它用它的值替换所有Unicode字符,包括注释的字符。

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

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

Hello

哇,我很惊讶为什么javac不能把它读成简单的字符。

嘿,实际上我想知道为什么它不评论Unicode?

javac转换\u转义,然后再做其他事情,包括处理注释。所以当它看到:

\uxxx

它将此标识为无效的Unicode转义,并以错误停止编译。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值