7

为什么这段代码

 public class Apostrophier
{
    public static String replace(String s)
    {
        return s.replace('\u0092','\u0027');
    }
}

'空字符文字'

当我尝试编译时?

4

2 回答 2

11

源文件中的 unicode 代码点被它们所代表的实际字符替换。因为'\u0027''(撇号)。因此,您的 return 语句被替换为:

  return s.replace('\u0092',''');  

注意: \u0092也会被控制字符代替。

因此,第二个参数是无效的字符文字。你可以\'直接使用。

于 2014-01-17T17:21:52.643 回答
5

替换 unicode 序列是编译过程的一个非常早期的步骤。特别是,它发生在解析文字之前。所以在解析文字的时候,\u0027已经被替换为'. 因此,在逗号之后,你有'''编译器无法理解的 。

于 2014-01-17T17:22:43.347 回答