为什么System.out.println()以ASCII代码零结束

Cod*_*lue 8 java

试试这段代码 -

public class WhitespaceTest
{
    public static void main(String[] args)
    {
        int x = 0;
        char c = (char) x;
        System.out.println("c-->"+c+"<---this doesn't print?");
    }
}
Run Code Online (Sandbox Code Playgroud)

输出是 -

c-->
Run Code Online (Sandbox Code Playgroud)

为什么System.out.println()以ASCII码零结束?

我在Windows 7下的JCreator LE中尝试过这个.

Jon*_*eet 18

这取决于你的控制台做什么(或其他任何处理System.out).System.out将传播所有信息就好了,如果你的控制台对U + 0000没有特别的意义那么一切都会好的.但是,许多UI控件会将其视为终止字符.这不是Java的"错误" - 它是UI控件本身.

(仅供参考,在Windows 7上的Windows命令提示符下运行该代码对我来说没问题.)

  • 天哪,这是Jon Skeet!不能......停止...... upvoting !! (9认同)