java - 为什么java还接受 ""和 ' '之外的unicode?

标签 java

这一行编译良好

Thread t = \u006E\u0065\u0077\u0020\u0054\u0068\u0072\u0065\u0061\u0064\u0028\u0029\u003B

这是文本 new Thread(); 的 unicode

我的问题是接受 " " 之外的 unicode 字符需要什么?或' ' 。我们可以在字符串文字和字 rune 字中使用 unicode。但实际代码本身需要什么来接受它呢?

最佳答案

这样做的原因是 Unicode 转义序列不是由语法或字符串解析代码处理的,而是由分词器处理的。因此,Java 语法永远不会“看到”这些转义序列,它会得到一个 Unicode 字符串。

这有不幸的副作用,例如此代码无法编译:

// C:\user\...

对于我们大多数人来说,这是一条评论。对于分词器来说,它是非法的 unicode 序列 ser\

这样做的原因是您现在可以在 Java 源代码中的任何位置使用任何 Unicode 字符 - Java 标识符限于 ASCII!

但是编辑 Java 的工具可能没那么好。 1994 年,很难找到支持 Unicode 的文本编辑器。此外,如果您继续使用 ASCII,代码生成器通常会工作得更好。

关于java - 为什么java还接受 ""和 ' '之外的unicode?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20214715/

相关文章:

java - ANTLR 4 运行时元数据和词汇

java - 困惑......关于 HelloAndroid 第一个应用程序

java - 如何在安卓模拟器上读取PDF文件

java - 如何将表格转为字符串?

java - javax.swing 中的 Unicode 字符仅在使用默认字体大小时显示

java - 如何在 java 中测试一个字符串是否等于数组中的任何其他字符串

java - 从 Draw2D Canvas 创建 PDF

java - REST 在实践中真的可以是无状态的吗?

java - HTTPClient-java.net.SocketException : Unconnected sockets not implemented thrown

java - 如果@before在构造函数之后执行,那么如何初始化该类?