为什么\ u000a是一个坏人?

时间:2014-08-09 11:44:35

标签: java

我正在尝试从十六进制初始化一个字符串:

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)

1 个答案:

答案 0 :(得分:5)

这是Java如何处理\u的结果。即使在tokenizer识别字符串文字之前,这些unicode转义也会在编译的早期处理。

因此,代码段相当于:

w.println("ab
");

这显然不正确。

要修复使用\n而不是\u000a