String concatenation '+=' in loop

개발자 구보씨의 일일·2024년 1월 22일

Java 공부

목록 보기
2/4

들어가며

프로그래머스 문제를 풀다가 발견한 경고 메세지
String concatenation '+=' in loop

	answer += my_string.charAt(i);

왜 문자열 연결을 반복문에서 +연산자로 하면 안 되는 걸까?

 

반복문에서 문자열 연결(String concatenation)이 권장되지 않는 이유 3줄 요약

  1. 자바의 String은 불변 객체(Immutable object)이기 때문에 객체 생성 이후 내부 값이 변경되지 않는다.
  2. 문자열을 연결할 때마다 값이 바뀌는 대신, 새로운 값이 메모리에 할당된다.
  3. 따라서, 반복문에서 이러한 문자열 연결이 반복되면 메모리 이슈가 생길 수 있다.

반복문 문자열 연결 예시

아래의 코드는 권장되지 않는 코드이다.

public class StringExample {
   public static void main(String args[]) {
      String stringArray[] = {"Good morning", "Good afternoon", "Good evening"};
      String singleString = new String();
      for (int i=0; i<stringArray.length; i++) {
         singleString = singleString+stringArray[i]+" ";
      }
      System.out.println(singleString);
   }
}

 

반복문 문자열 연결 예시(권장)

아래의 코드는 StringBuilder를 활용한 코드 예시이다.

public class StringExample {
   public static void main(String args[]) {
      String stringArray[] = {"Good morning", "Good afternoon", "Good evening"};
      StringBuilder singleString = new StringBuilder();
      for (int i=0; i<stringArray.length; i++) {
         singleString.append(stringArray[i]);
         singleString.append(" ");
      }
      System.out.println(singleString);
   }
}

출처 : Why should you be careful about String concatenation (+) operator in loops using Java?

profile
한 발 한 발 내딛는 거북이걸음

0개의 댓글