这些扼要我发现,当java中的String
长度超过一个值时,它显示为奇数。
有我的测试代码
public static void main(String[] args) {
int length = 4096;
char[] chars = new char[length];
for (char c : chars) {
c = 'c';
}
String str = new String(chars);
System.out.println(str.length());
System.out.println(str);
}
当我在计算机上运行上面的代码时,我从控制台获得了4096个空格字符输出。
然后我将长度变量更改为4095,此时输出正确,4095 c
个字符。
但在另一台计算机上,除非长度变量小于2900,否则输出不会正确。
我只是想不通为什么?
修改
我想我知道发生了什么,我尝试在命令窗口再次运行它,即使长度值足够大,它的打印正确。
因此对eclipse的控制台似乎有些限制。
但是我检查了我的eclipse控制台缓冲区大小,它是800000
答案 0 :(得分:6)
您只是更改了局部变量c
的值,而不是char[]
中条目的值。
要更改实际值,请使用“常规”for循环,而不是for-reach循环:
for (int i = 0; i < chars.length; i++) {
chars[i] = 'c';
}
作为旁注,java中的String
不是char[]
- 它是String
对象。