我有一个代码是:
String str = "hi";
String[] strArray = new String[5];
for(int c = 0;c < 5;c++){
str += strArray[c];
}
虽然有5个字符串我可以一个一个地做?但如果有50个,甚至500个呢?这种类型的+=会给我一个错误,那么我如何正确地将数组中的所有字符串加起来呢?
在String
对象上使用StringBuilder
而不是+=
。原因是在JAVA中附加字符串每次都会创建不可变的string对象,这会导致内存爆炸。另一方面,StringBuilder
是可变的对象,你可以随心所欲地追加。然后返回一个String
对象。
StringBuilder stringBuilder = new StringBuilder();
String[] strArray = new String[5]; //or some big number
for(int c = 0;c < 5;c++)
{
stringBuilder.append(strArray[c]);
}
System.out.println(stringBuilder.toString());
我不确定你得到了什么错误-我运行了你的例子,它工作良好。如果您输出结果str
,那么您得到的是hinullnullnullnullnull
,因为您还没有在strArray
中添加任何内容。
使用+=
操作符的字符串连接在Java中效率不高:为了高效地完成此操作,您需要使用StringBuilder
类。
StringBuilder
类的示例:
StringBuilder builder = new StringBuilder();
String[] strArray = new String[50];
// Put something in the strings in strArray
for (int c = 0; c < strArray.length; c++) {
builder.append(strArray[c]);
}
String str = builder.toString();