Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将数字快速插入字符串,按.format还是.replace?_Java_String_Replace_Formatting_String Formatting - Fatal编程技术网

Java 将数字快速插入字符串,按.format还是.replace?

Java 将数字快速插入字符串,按.format还是.replace?,java,string,replace,formatting,string-formatting,Java,String,Replace,Formatting,String Formatting,我只想将字符串中的占位符设置为大循环中的连续数字。为方便起见,占位符为%d。使用String的.format或.replace方法,什么更快?因为我不知道响应,但我很好奇,我做了一个非常简单的测试并添加了指标,结果如下: 守则: @Test public void test(){ String original = "This is the phrase %d"; long init = System.currentTimeMillis(); for(int i = 0;

我只想将字符串中的占位符设置为大循环中的连续数字。为方便起见,占位符为
%d
。使用String的.format或.replace方法,什么更快?

因为我不知道响应,但我很好奇,我做了一个非常简单的测试并添加了指标,结果如下:

守则:

@Test
public void test(){
    String original = "This is the phrase %d";
    long init = System.currentTimeMillis();
    for(int i = 0; i < 100000; i++){
        System.out.println(String.format(original, i));
    }
    long end = System.currentTimeMillis();

    long init1 = System.currentTimeMillis();
    for(int i = 0; i < 100000; i++){
        System.out.println(original.replace("%d", String.valueOf(i)));
    }
    long end2 = System.currentTimeMillis();
    System.out.println("Method 1: " + (end-init));
    System.out.println("Method 2: " + (end2-init1));
}
@测试
公开无效测试(){
String original=“这是短语%d”;
long init=System.currentTimeMillis();
对于(int i=0;i<100000;i++){
System.out.println(String.format(original,i));
}
long end=System.currentTimeMillis();
long init1=System.currentTimeMillis();
对于(int i=0;i<100000;i++){
System.out.println(original.replace(“%d”,String.valueOf(i));
}
long-end2=System.currentTimeMillis();
System.out.println(“方法1:”+(end init));
System.out.println(“方法2:”+(end2-init1));
}
结果

方法1:1950方法2:1361


因此,我们可以假设.replace比String的格式化方法快

两种方法都试过了吗?你的结果是什么?是否可以将数字格式化为固定位数?(如果是这样的话,创建一个字符数组来重用可能会很有帮助……)基本上您还没有在这里提供足够的信息。展示您迄今为止所做的工作,以及您的具体性能要求,将非常有帮助。@JonSkeet我非常专注于编码,尽管我只是想把这个问题带到房间里。很抱歉,我忘记了指南,真的需要仔细思考我的问题…这里有一些阅读@Kayaman谢谢!是我下一步正确执行基准测试的最佳时机:)我怀疑还有更快的选择,找出格式字符串的位置,创建适当的
char[]
,然后每次只替换相关字符。