1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import java.util.Random;
 
public class Main {
    public static void main(String[] args)
    {
        Random r = new Random();
        long string = System.currentTimeMillis();
        for(int i=0; i<1000000; i++)
        {
            int rand = r.nextInt(9);
            String s = String.format("Random int is %d.", rand);
            System.out.println(s);
        }
        string = System.currentTimeMillis() - string;
        long stringbuilder = System.currentTimeMillis();
        for(int i=0; i<1000000; i++)
        {
            int rand = r.nextInt(9);
            String s = new StringBuilder().append("Random int is ").append(rand).append(".").toString();
            System.out.println(s);
        }
        stringbuilder = System.currentTimeMillis() - stringbuilder;
        System.out.println(String.format("String.format is %dms while StringBuilder is %dms", string, stringbuilder));
    }
}
 
cs

결과(출력용 Random int is~~부분 지우고)

String.format is 10025ms while StringBuilder is 6878ms

...?

String.format은 String 객체 하나만 생성되는거고 StringBuilder는 StringBuilder 객체와 String 객체 두개가 생성되는거 아님?

왜 String.format이 더 느리지

이유 아시는분?