Hi,
再度从头学习Java,遇到一个小小问题,请教各位同学:一个小练习程序:public class a0203
{
public static void main(String args[])
{

System.out.println("下列为空白字元(white space)吗?");
System.out.println("'\\u000D' " + Character.isWhitespace('\u000D'));
System.out.println("'\\u0020' " + Character.isWhitespace('\u0020'));
System.out.println("'\\u001A' " + Character.isWhitespace('\u001A'));
System.out.println("'\\u001D' " + Character.isWhitespace('\u001D'));
}
}javac 编译时,总是提示 \u000D 那行有错:说行结尾不合法。注掉此行,其他行却没问题。为什么呢?请赐教。谢谢!

解决方案 »

  1.   

    后面多了个空格
    应该是'\u000D' 
    而不是'\u000D ' 
      

  2.   

    这种不可见的空白字符是不能直接用在字符串中的,它会直接被解释成为java代码的一部分。
    比如:
    public static void main(String args[]) 

    \u000D\u0020 }
    这样的程序是能执行的。
    建议去看一下Java Language Specification关于unicode处理的部分
      

  3.   

    http://www.janeg.ca/scjp/lang/charLiteral.html
    可以看看这篇文章
    !!! Warning !!! 
    The compiler translates Unicode characters at the beginning of the compile cycle.Using the Unicode escape characters \u000A for newline and \u000D for return in a String or comment produces a compile-error as they are interpreted, literally, as 'end-of-line'. Always use the special characters '\n' or '\r'  
      

  4.   

    谢谢以上同学的答复。aniude 和 xstom19 的为正解。我的代码里,实际上没有 空格 或 中文空格 之类的问题。难道Java 1.2里支持 对不可见的空白字符 用其16进制形式表示?Java 1.5不支持了?
    上述的sample code,来自一本讲述Java 1.2的书。要么就是这本书误人子弟?呵呵!再次感谢所有关注的同学!