Java 什么';创建1MB字符串的好方法是什么?

Java 什么';创建1MB字符串的好方法是什么?,java,string,Java,String,我想为基准测试创建1MB字符串,所以我编写了如下代码: public final static long KB = 1024; public final static long MB = 1024 * KB; public static void main(String[] args){ String text_1MB=createString(1*MB); } static String createString(long size){ StringBuffer

我想为基准测试创建1MB字符串,所以我编写了如下代码:

public final static long KB     = 1024;
public final static long MB     = 1024 * KB;
public static void main(String[] args){
    String text_1MB=createString(1*MB);
}
static String createString(long size){
    StringBuffer o=new StringBuffer();
    for(int i=0;i<size;i++){
        o.append("f");
    }
    return o.toString();
}
公共最终静态长KB=1024;
公共最终静态长MB=1024*KB;
公共静态void main(字符串[]args){
String text_1MB=createString(1*MB);
}
静态字符串createString(长大小){
StringBuffer o=新的StringBuffer();
对于(inti=0;i

char[] chars = new char[size];
// Optional step - unnecessary if you're happy with the array being full of \0
Arrays.fill(chars, 'f');
return new String(chars);

创建一个字符数组并使用
新字符串(char[])
构造函数。

您只需创建一个大字符数组即可

char[] data = new char[1000000];
如果您需要创建一个真正的
字符串
对象,您可以:

String str = new String(data);

使用类StringBuilder而不是StringBuffer怎么样?StringBuilder应该更快,因为它不像StringBuffer那样是同步的


也许您可以通过设置编译器标志来增加堆内存和虚拟内存,从而提高性能。这当然不会有任何影响。

使用StringBuilder并设置容量:

char[] s = new char[1024 * 1000];
String str = String.copyValueOf(s);
static String createString(long size){
    StringBuilder o=new StringBuilder(size);
    for(int i=0;i<size;i++){
        o.append("f");
    }
    return o.toString();
}
静态字符串createString(长){
StringBuilder o=新的StringBuilder(尺寸);
对于(int i=0;i

分配一个1024字节的ByteBuffer,然后从其支持数组中构造新字符串。

我认为使用Arrays类是聪明的,因为它只调用一次方法,而另一个类的Append方法必须多次调用。OP已经没有在循环中使用+=了-问题中的代码使用StringBuffer。请注意,该字符串将为2MiB in size.hi@Joey,“2个MiB in size”是什么意思?它是一个由1048576个字符组成的字符串,每个字符都是UTF-16代码单元。因此,您的字符串没有1个MiB,只有2个。
new String(ByteBuffer.allocate(1024).array());