FIF's 코딩팩토리

[Java]String 클래스의 문제점 본문

Back-End/Java(자바)

[Java]String 클래스의 문제점

FIF 2019. 11. 7. 11:22
반응형

스트링클래스는 문자열을 다룰때 사용한다.

스트링 클래스에서 + 연산을 할경우 내부적으로 StringBuffer클래스가 만들어진후 append()메소드를 사용하여 문자열을 연결한다.

 

String str1 = "hello world";
String str2 = str1.substring(5);

System.out.println(str1);
System.out.println(str2);

 

String str3 = str1 + str2;
System.out.println(str3);

 

위아래 코드는 똑같은 결과를 가져온다.

String str4 = new StringBuffer().append(str1).append(str2).toString();
System.out.println(str4);

 

+연산을 하나 할 경우는 크게 상관이 없다.

그럼 다음처럼 + 연산을 50000번을 한다고 하면?

 

String str5 = "";
for (int i = 0; i < 50000; i++) {
   str5 = str5 + "*";
}
System.out.println(str5);

 

내부적으로 StringBuffer 객체가 50000번이나 만들어진다.

자바는 new연산자를 많이 사용할 수록 프로그램의 속도가 저하되는 문제점이 있다.

 

따라서 문자열을 반복문 안에서 많이 사용한다면 StringBuffer 클래스의 append()메서드를 사용한 후String클래스의 toString()메서드를 사용하자.

 

for (int i = 0; i < 50000; i++) {
   sb.append("*");
}
String str6 = sb.toString();
System.out.println(str6);

 

실제 실행 시간을 비교해 보면 크게 차이난다.

아래가 StringBuffer 클래스를 사용했을 경우다.

반응형

'Back-End > Java(자바)' 카테고리의 다른 글

[Java] Set  (0) 2019.11.07
[Java] 제네릭(Generic) 사용 예  (0) 2019.11.07
[Java] 프로그램 실행 시간 측정  (0) 2019.11.07
스트링버퍼 클래스  (0) 2019.11.05
java.lang 패키지와 오토박싱/오토언박싱  (0) 2019.11.04
Comments