0

我发现这些奇怪的东西是当Stringjava中的长度超过一个值时,它会显示为奇怪。

有我的测试代码

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

4

1 回答 1

6

您只是在更改局部变量c的值,而不是在char[].

要更改实际值,请使用“常规” for 循环,而不是 for-reach 循环:

for (int i = 0; i < chars.length; i++) {
    chars[i] = 'c';
}

附带说明一下String,java 中的 a 不是 a char[]- 它是一个String对象。

于 2013-11-01T07:36:26.823 回答