java - 由于 Java 中的合法注释中的内容而导致的错误

标签 java unicode compiler-errors

关于 this coderanch链接,我发现下面的注释会给编译器报错:-

// Compiler Error due to this Unicode char '\u000a'

原因是,Unicode 序列被直接替换为它对应的实际字符。由于'\u000a'对应于换行符,所以在找到'\u000a'的地方放置一个换行符。

我的问题是,“是否有任何其他方式因评论而导致编译错误?”

最佳答案

“编译器不仅在将程序解析为标记之前将 Unicode 转义符转换为它们所代表的字符 [...],而且在丢弃注释和空格之前也会这样做 [JLS 3.2]。” Java™ 谜题:陷阱、隐患和边角案例,作者:Joshua Bloch、Neal Gafter。

接下来的几行是有效的 Java 代码:

\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0020\u0020\u0020
\u0063\u006c\u0061\u0073\u0073\u0020\u0055\u0067\u006c\u0079
\u007b\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0020\u0020
\u0020\u0020\u0020\u0020\u0073\u0074\u0061\u0074\u0069\u0063
\u0076\u006f\u0069\u0064\u0020\u006d\u0061\u0069\u006e\u0028
\u0053\u0074\u0072\u0069\u006e\u0067\u005b\u005d\u0020\u0020
\u0020\u0020\u0020\u0020\u0061\u0072\u0067\u0073\u0029\u007b
\u0053\u0079\u0073\u0074\u0065\u006d\u002e\u006f\u0075\u0074
\u002e\u0070\u0072\u0069\u006e\u0074\u006c\u006e\u0028\u0020
\u0022\u0048\u0065\u006c\u006c\u006f\u0020\u0077\u0022\u002b
\u0022\u006f\u0072\u006c\u0064\u0022\u0029\u003b\u007d\u007d

关于java - 由于 Java 中的合法注释中的内容而导致的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9225124/

相关文章:

java - 无法在 Spring Boot 应用程序中实例化 session 工厂

java - Nim 游戏 - 指定获胜者

unicode - 给定一个 UTF-8 字符串,在搜索 ASCII 字符时我可以将其视为字节字符串吗?

python - 抓取编码为 iso-8859-1 而不是 utf-8 : how do I store the correct unicode in my database? 的网站

c# - 提供程序选项中的“compilerVersion”属性必须为 'v4.0' 或更高版本

c++ - 默认的Visual Studio C++控制台应用程序有409个错误

java - 使用包装器在java上进行两个输入的乘法

java - Spring @DateTimeFormat 夏令时转换错误

objective-c - 从 NSString : How to ignore the timezone 转换为 NSDate

c++ - OpenMPI 编译错误