JDK 버전업이 되면서 String 또한 내부적으로 StringBuilder 을 쓴다고 들었는데. 좀더 연구해봐야겠습니다. 쨋든 결론은 문자열 장난은 StringBuilder 입니다. String 인스턴스 같은경우 매번 문자열을 재조합 할때마다 새로운 인스턴스를 생성한다.

public class Main {
	public static void main(String[] args) {
		
		String tmp = new String();

		long start = System.nanoTime();
		for (int i = 0; i < 100000; i++) {
			tmp += i;
		}
		long end = System.nanoTime();
		
		System.out.println("==========================================");
		System.out.println("String 결과값");
		System.out.println((end-start)/1000000.0+"ms");
		System.out.println((end-start)/1000000000.0+"초");
		System.out.println("==========================================");
		
		
		
		StringBuilder tmp1 = new StringBuilder();
		start = System.nanoTime();
		for (int i = 0; i < 100000; i++) {
			tmp1.append(i);
		}
		end = System.nanoTime();
		
		System.out.println("==========================================");
		System.out.println("StringBuilder 결과값");
		System.out.println((end-start)/1000000.0+"ms");
		System.out.println((end-start)/1000000000.0+"초");
		System.out.println("==========================================");
		
	}
}

결과 값:

==========================================
String 결과값
15904.631555ms
15.904631555초
==========================================
==========================================
StringBuilder 결과값
4.327804ms
0.004327804초
==========================================