日期:2014-05-20  浏览次数:20860 次

奇怪, \u000a被识别为: 未结束的字符串字面值
作一个简单的unicode输出:  

  System.out.print( "\u002a ");
得到:   *

  System.out.print( "\u4e10 ");
得到:丐

换行的unicode编码是十六进制的a
  System.out.print( "\u000a ");
但编译的时候有错误:
D:\java\src\JavaABC\src\javaabc\Main.java:53:   未结束的字符串字面值
              System.out.print( "\u000a ");

请教一下,   换行为什么不能输出   ?


------解决方案--------------------
换行请使用System.out.println( " "); 谢谢。
------解决方案--------------------
\u000a是一个LineFeed,即换行,编译后为System.out.print(
);
print()没有空参重载形式,所以为错
------解决方案--------------------
楼上的说的对,如果你看过java puzzzlers你会知道。
其实编译的时候编译器会把源代码中所有的unicode代码转换过来,然后再做语法分析,
你的这句代码
System.out.print( "\u000a ");
编译程序先会讲他变成
System.out.print(
);
然后在开始编译(可能这里应该叫做语法分析)
接下来就如楼上说的

print()没有空参重载形式,所以为错