为什么\ 0在java中的不同系统中打印不同的输出

时间:2013-02-19 13:51:29

标签: java netbeans

以下代码在不同系统中打印不同的输出。

String s = "hello?vsrd".replace('?', '\0');
System.out.println(s);

当我尝试使用我的系统( Linux Ubuntu,Netbeans 7.1 )时,它打印出来了:

enter image description here

当我在另一个系统( Linux Mint,Netbeans 7.1 )中尝试相同的代码时,它打印为 enter image description here

我明白\0充当java中的角色(by referring this answer,显然 s.length()打印 10 )。并且,不可打印的字符可以像这样打印(框)。但是,为什么这只在某些系统上表现呢?它是jdk版本或操作系统的区别?我不想要替代代码,但想知道为什么会这样。 您可以考虑String s = "hello\0vsrd";

2 个答案:

答案 0 :(得分:3)

\0是一个不可打印的角色。

此外,在C中,字符串传统上以\0终止,因为它们没有明确地存储它们的长度。有些程序只有在达到该角色时才会停止打印。

Netbeans控制台会打印它,但字体可能没有字形,甚至没有正方形,这可能解释了不同的行为。

答案 1 :(得分:0)

我知道这不是直接的答案。但也许可以更有帮助。
你真的需要'\0'吗?

也许你可以使用replaceAll()

String s="hello?vsrd".replaceAll("?", "");