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

时间:2012-06-18 15:28:12

标签: 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?");
    }
}

输出是 -

c-->

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

我在Windows 7下的JCreator LE中尝试了这个。

2 个答案:

答案 0 :(得分:18)

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

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

答案 1 :(得分:2)

在C / C ++样式字符串中,字符串的结尾由终止空字符的位置决定(值为0的字符,就像您的情况一样)。很可能System.out.println()调用将字符串逐字传递给OS,它认为字符串以空字符结束,并且只打印到该点