8

试试这段代码 -

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 中试过这个。

4

2 回答 2

18

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

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

于 2012-06-18T15:34:32.010 回答
2

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

于 2012-06-18T15:35:28.590 回答