我正在尝试从十六进制初始化一个字符串:
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) {};
}
}
但是看起来“\ u000a”是一个badchar,它一直告诉我未关闭的字符串文字?
a.java:8: error: unclosed string literal
w.println("\u0061\u0062\u000a");
知道它有什么问题吗?
运行:
%> 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)
答案 0 :(得分:5)
这是Java如何处理\u
的结果。即使在tokenizer识别字符串文字之前,这些unicode转义也会在编译的早期处理。
因此,代码段相当于:
w.println("ab
");
这显然不正确。
要修复使用\n
而不是\u000a
。