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 클래스를 사용했을 경우다.
반응형