2012-03-17 1309 views
7

可能重复:
Java string replace and the NUL (NULL, ASCII 0) character?Java中char(0)的含义是什么?

我做一些Java中的字符串算法,我注意到,无论我到包括与0(零)的值一个char它标志着字符串的结尾。像这样:

String aString = "I'm a String"; 
char[] aStringArray = aString.toCharArray(); 
aStringArray[1] = 0; 
System.out.println(new String(aStringArray)); //It outputs "I" 

这种行为的原因是什么?

+1

空字符:http://en.wikipedia.org/wiki/Null_character – 2012-03-17 20:49:45

回答

10

字符'\0'是空字符。这是一个控制字符,它终止字符串,这不是字符串的Java(这是他们用C是如何工作的,虽然)

2

对于一些额外的观点是如何工作的,以下内容添加到您的代码:

System.out.println(new String(aStringArray).length()); 
for (Byte b : new String(aStringArray).getBytes()) { 
    System.out.print("["+b+"]"); 
} 

您的渲染系统(控制台或输出窗口)未显示所有内容。

0

我想知道你是否发布了你的实际代码。当使用String(byte[])构造函数时,字符串的实际长度取决于数组的内容。