繁体   English   中英

为什么System.out.println()以ASCII码零终止

[英]Why does System.out.println() terminate at ASCII Code zero

试试这段代码-

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中尝试了此操作。

这取决于您的控制台执行的操作(或其他正在处理System.out )。 System.out会很好地传播所有信息,如果您的控制台对U + 0000没有特殊含义,那么一切都会很好。 但是,许多UI控件会将其视为终止字符。 这不是Java的“故障”,而是UI控件本身。

(仅供参考,对我而言,在Windows 7上的Windows命令提示符下运行该代码就可以了。)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM