首页 > 解决方案 > StringBuilder/StringBuffer 在 java 中追加超过 1300 个字符的问题

问题描述

下面是问题:

StringBuffer sbf = new StringBuffer();

for(var i=1;i<=1301;i++){     
   sbf.append(i);
}

System.out.println(sbf.toString());

打印空但里面有值

请查看下图中的值

图:调试模式下的屏幕截图

如果我们选择 stringbuffer 对象,它显示为空但值在那里你可以观察到

我很奇怪看到这发生了什么 有人可以为此提出解决方案吗

标签: javastringstringbuilder

解决方案


注意当整数 10 相加时,它显示为 1, 0。我的猜测是由于不同类型的处理方式,您的期望没有得到满足。

如果您想要一个巨大的字符串,并添加字符串,这对您来说很有意义:

StringBuffer sbf = new StringBuffer();
sbf.append("10");
sbf.append("11");
System.out.println(sbf.toString());

这将按预期输出:“1011”。

这是 StringBuffer 的常见用法。

当附加一个整数时,会添加一个字符串表示。这就是您的示例中发生的情况。整数 10 转换为字符串“10”,添加附加。


推荐阅读