[Java] concat, append 문자열 합치기

델버·2022년 5월 19일
0

Java

목록 보기
6/8

문자열을 합칠 때 +, append, concat으로 한다. 하지만 가끔 + 연산자로 합친 문자열을 (String) “”처럼 형변환 해주는 경우가 있다. 그럼 연산자로 합치는 것과 메소드를 사용하는 것은 무슨 차이일까?


+ 연산자

  • String 객체는 불변이기 때문에 각각 합칠 때마다 새로 메모리에 할당된다. 여러 문자열을 합친다고하면 과도하게 메모리를 차지하게 돼버린다.
  • 편리하지만 성능은 좋지 않은 방식이다.
  • Java1.6부터는 StringBuilder, StringConcatFactory 또는 StringBuffer 을 이용해 문자열을 변환 시킨 뒤, append로 문자열을 더하고 다시 toString 함수로 문자열로 반환해준다.
String a = "concat과 "
String b = "append의 차이"

System.out.println(a + b);

// concat과 append의 차이

concat

  • Concat은 합친 문자열을 new String()해서 생성해준다.
  • StringBuilder는 append()로 문자열을 합칠 수 있다. String으로 합치는 것과 다른 점은, immutable인 String은 수정하려면 String을 다시 대입해야하지만, StringBuilder는 메모리 할당 과정 없이 수정가능하다는 것이다.
  • StringBuffer는 StringBuilder와 호환 가능하지만 thread-safe하다. StringBuilder는 동기화를 보장하지 않는다.
  • single thread- StringBuilder
    multi thread - StringBuffer
String a = "concat과 "
String b = "append의 차이"

System.out.println(a.concat(b));

// concat과 append의 차이

  • 여러 개의 문자열을 더할 때는 + 연산자
    두 개의 문자열을 더할 때는 concat

StringBuilder, StringBuffer 사용법

StringBuilder sb = new StringBuilder();
sb.append("StringBuilder와");
sb.append("StringBuffer의 차이");

System.out.println(sb.toString());
  • append()로 합치는 것과 출력 시 toString()으로 사용해야 한다.

참고

Java 1.6에서의 String

String에 대한 다른 알아둬야할 지식을 정리해놓으셨다.

0개의 댓글