본문 바로가기

코딩/JAVA 공부

[JAVA] String 문자열 더하기

String Class의 문제점

 

String 클래스에서 + 연산자를 사용해서 간단하게 문자열을 추가할 수 있다.

String str1 = "Hellow";
String str2 = " World";
String str3 = str1 + str2;

System.out.println(str3);
// 결과 : Hellow World

직관적으로 이해하기 쉽지만, 이 코드가 실제 수행될 땐 StringBuffer를 사용해 아래와 같이 해석되고 수행된다.

String str1 = "Hellow";
String str2 = " World";
String str3 = new StringBuffer().append(str1).append(str2).toString();

System.out.println(str3);
// 결과 : Hellow World

이렇게 짧은 코드에선 문제가 없지만, 만약 반복문을 사용해 아주 많은 String을 더하게 된다면?

new StringBuffer 연산자를 1000번 호출하게 되고, 이는 수행 속도를 많이 늦출 수 있다.

String str1 = "";

for(int i = 0; i < 1000; i++) {
	str1 = str1 + "*";
}

따라서 많은 양의 문자열을 더하는 상황에선 StrungBuffer의 append함수를 직접 사용하는 게 더 올바른 방법이다.

StringBuffer sb = new StringBuffer();

for(int i = 0; i < 1000; i++){
	sb.append("*");
}