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不打印<
分隔符号?
答案 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
的字符串时出现问题并不会让我感到惊讶。
答案 1 :(得分:0)
>a <
> <
end of test
我无法复制你的输出 - 这是我在BlueJay,Eclipse和NetBeans中获得的输出。您是否尝试过在不同的IDE中确认每次都发生这种情况?