Java - 스트링 클래스의 문제점

춤추는개발자·2022년 12월 6일
0

Java 정리

목록 보기
54/59

스트링 클래스의 문제점

문자열과 문자열을 + 연산자로 합치게 되면 자바는 StringBuffer 객체를 자동으로 만들고 append() 메서드로 문자열을 합쳐주고 toString() 메서드로 문자열로 바꿔 반환해 줍니다. 한두번의 + 연산자로 문자열을 합쳐주는건 괜찮겠지만 반복문 등으로 많은 문자열을 합쳐주게 되면 계속 StringBuffer 객체를 만들게 됩니다. 자바는 new 연산자를 많이 호출할수록 성능이 떨어지게 되는 많은 문제가 발생합니다. 그래서 많은 문자열을 합쳐야하는 기능을 만들때는 처음부터 StringBuffer 객체를 만들고 append() 메서드로 문자열을 합친다음 마지막에 toString() 메서드로 문자열 형태로 반환해주는것이 바람직한 코드 입니다. 코드로 확인 해보면

class JavaExercise_79 {
    public static void main(String[] args) {
    String str1 = "abc def";
    String str2 = str.subString(4);
    String str3 = str1+str2;
    System.out.prinln(str3);
    출력 결과 : 
    abc def def

위와 같이 str1+str2를 하게 되면

String str3 = new StringBuffer().append("abc def").append(" def").toString();

StringBuffer 객체가 만들어지면서 문자열을 합치고 그 객체를 문자열로 변환후 반환해주게 됩니다. 이것을 계속 반복해주면

for(int i=0; i<=100; ++i){
      str3+= " def";
      }

계속 StringBuffer 객체가 만들어 지면서 성능을 저하시키는 원인이 됩니다.
반복적으로 문자열을 합치는 기능을 만들때는

StringBuffer sb = new StringBuffer(); 
for(int i=0; i<=100; ++i{
     sb.append(" def");
     }
sb.toString();

위의 코드와 같이 StringBuffer 객체를 먼저 만들어 append() 메서드로 문자열을 합쳐준 후 toString() 메서드로 문자열로 변환후 반환해주는 방법이 바람직한 코드 입니다.

0개의 댓글