Java快速生成零';s

Java快速生成零';s,java,Java,我有密码 private static String generateString(int size) { StringBuffer s = new StringBuffer(); for (int i = 0; i < size; i++) s.append("0"); return s.toString(); } private静态字符串生成器字符串(int-size){ StringBuffer s=新的StringBuffer(); 对于(

我有密码

private static String generateString(int size) {
    StringBuffer s = new StringBuffer();
    for (int i = 0; i < size; i++)
        s.append("0");
    return s.toString();
}
private静态字符串生成器字符串(int-size){
StringBuffer s=新的StringBuffer();
对于(int i=0;i
这将生成大小为4的me
0000


如何简化这段代码?

您的代码很好,但在这种情况下,您应该使用StringBuilder而不是StringBuffer(性能更好,您不需要StringBuffer的同步特性)

您的代码很好,但在这种情况下,您应该使用StringBuilder而不是StringBuffer(性能更好,您不需要StringBuffer的同步特性)

假设size的最大值为100:

private static STRING = "0000...";  //  length = 100

private static String generateString(int size) {
    return STRING.substring(0, size);
}

假设大小的最大值为100:

private static STRING = "0000...";  //  length = 100

private static String generateString(int size) {
    return STRING.substring(0, size);
}

我不知道你所说的“快”是什么意思——只需几行代码就快,还是CPU执行快

不要使用
StringBuffer
。它是线程安全且高度同步的。如果有的话,
StringBuilder
占用的空间要小得多

但这里有一个替代方案:

char[] c = new char[10];
Arrays.fill(c, '0');
String result = new String(c);

它甚至比
StringBuilder
更轻,可能是最轻的了。
StringBuilder
也在内部附加到
char[]
上,但不知道前面的大小,它一直在进行范围检查并根据需要缩放缓冲区。您可以构建
StringBuilder(n)
,但它仍然会进行浪费性的边界检查,您必须编写循环以附加自己。

我不确定您所说的“快”是指代码行数少的快,还是CPU执行快

不要使用
StringBuffer
。它是线程安全且高度同步的。如果有的话,
StringBuilder
占用的空间要小得多

但这里有一个替代方案:

char[] c = new char[10];
Arrays.fill(c, '0');
String result = new String(c);


它甚至比
StringBuilder
更轻,可能是最轻的了。
StringBuilder
也在内部附加到
char[]
上,但不知道前面的大小,它一直在进行范围检查并根据需要缩放缓冲区。您可以构建
StringBuilder(n)
,但它仍然会进行浪费性的边界检查,并且您必须编写循环来添加自己。

为什么您需要简化它?这足够简单,不是吗?而且您不会更快。请选择可读的代码。Java速度足够快。通过“简化”此代码,您到底想解决什么问题?
String.format(“%0”+size+“d”,0);
for
size>0
。你为什么需要简化它?这很简单,不是吗?而且你也不会太快。请选择可读的代码。Java速度足够快。通过“简化”这段代码,你到底想解决什么问题?
String.format(“%0”+size+“d”,0)
对于
size>0
是的!我需要的.Arrays.copy比添加到缓冲区快。对于java7及以上版本,子字符串顺序是O(n),我们假设大小是有限的。是的!我需要的.Arrays.copy比添加到缓冲区快。对于java7及以上版本,子字符串顺序是O(n)我们假设大小是有限的。你必须添加一个空终止符吗?这是自动完成的吗?@InsertUserName这里不,你不需要。在Java中,所有数组都是有界的,这个字符串构造函数只是通过复制提供的整个数组来构建一个新字符串。明白了。C正在干扰我的Java knowledge=PDo你必须添加一个空的terminator还是自动完成的?@insertUserName此处不,您不需要。在Java中,所有数组都是有界的,这个字符串构造函数只是通过复制提供的整个数组来构建一个新字符串。明白了。C弄乱了我的Java知识=P