我正在尝试从十六进制初始化一个字符串:
import java.io.*;
public class a {
public static void main (String[] args)
{
try {
PrintWriter w = new PrintWriter("something");
w.println("\u0061\u0062\u000a");
w.close();
} catch (Exception e) {};
}
}
Run Code Online (Sandbox Code Playgroud)
但看起来像"\ u000a"是一个badchar,它一直告诉我未封闭的字符串文字?
a.java:8: error: unclosed string literal
w.println("\u0061\u0062\u000a");
Run Code Online (Sandbox Code Playgroud)
知道它有什么问题吗?
运行:
%> java -version
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)
Run Code Online (Sandbox Code Playgroud)
这\u是Java 如何处理的结果.即使在tokenizer识别字符串文字之前,这些unicode转义也会在编译的早期处理.
因此,代码段相当于:
w.println("ab
");
Run Code Online (Sandbox Code Playgroud)
这显然是不正确的.
修复使用\n而不是\u000a.
| 归档时间: |
|
| 查看次数: |
1376 次 |
| 最近记录: |