试试这段代码 -
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中尝试了这个。
答案 0 :(得分:18)
这取决于您的控制台的功能(或处理System.out
的其他任何内容)。 System.out
会很好地传播所有信息,如果你的控制台对U + 0000没有特别的意义,那么一切都会很好。但是,许多UI控件将视为终止字符。这不是Java的“错误” - 它是UI控件本身。
(仅供参考,在Windows 7上的Windows命令提示符下运行该代码对我来说没问题。)
答案 1 :(得分:2)
在C / C ++样式字符串中,字符串的结尾由终止空字符的位置决定(值为0的字符,就像您的情况一样)。很可能System.out.println()
调用将字符串逐字传递给OS,它认为字符串以空字符结束,并且只打印到该点