java中的String有长度限制吗?

时间:2013-11-01 07:34:13

标签: java string

这些扼要我发现,当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

1 个答案:

答案 0 :(得分:6)

您只是更改了局部变量c的值,而不是char[]中条目的值。

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

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

作为旁注,java中的String不是char[] - 它是String对象。