如果Java打印NUL字符怎么办?

时间:2016-05-10 23:37:12

标签: java string

public static void main(String[] args) {
    char[] array = new char[2];
    array[0] = 'a';
    String s = new String(array);
    assert s.length() == 2;
    System.out.print(">" + s + "<\n");
    System.out.print(">" + s.substring(1) + "<\n");
    System.out.print("end of test.\n");
}

输出结果为:

>a
>
end of test

与C不同,Java字符串不是空字符终止,因此断言为真。为什么Java不打印<分隔符号?

编辑:可能与Ubuntu 14.04上的Eclipse 4.5.1相关。

2 个答案:

答案 0 :(得分:3)

我已经在Eclipse中测试了您的代码,并且似乎的所有内容都可以正常工作。

但是,如果我从Eclipse控制台复制/粘贴输出并将其粘贴到文本编辑器上,它只会粘贴您提到的>a

我甚至粘贴了从Eclipse控制台复制/粘贴的>a(当我看到>a <时...看下面的截图)。

所以,我将这个小代码片段添加到您的代码中:

String f = " >" + s + "<\n";
for (int i=0; i < f.length(); i++) {
    System.out.println((int)f.charAt(i));
}

这是ascii代码:

32
62
97
0
60
10

我认为您的控制台在打印NUL(或0)字符时发生冲突。另外,我在Windows上对此进行了测试,因此Windows在复制/粘贴中间带NUL的字符串时出现问题并不会让我感到惊讶。

这是我日食和输出的截图: enter image description here

答案 1 :(得分:0)

    >a <
    > <
    end of test

我无法复制你的输出 - 这是我在BlueJay,Eclipse和NetBeans中获得的输出。您是否尝试过在不同的IDE中确认每次都发生这种情况?