+연산자, concat()

WO_O·2023년 7월 23일

개요

자바 소스를 작성하면서 두 연산자의 차이점이 궁금하게 되어 작성하게 되었다.

  1. +연산자
  • +연산자를 사용하여 둘 이상의 문자열이 합쳐진 결과는 힙(Heap) 영역에 생성된다.
  • Java 1.5 이전 버전에서는 +연산자 사용 시 힙 영역에 쓰레기 데이터가 생성된다고 소개되지만 1.5버전 이후로는 합쳐진 최종 결과만 힙 영역에 존재한다.
  String strValue = "ABC";

  String strConcatResult = strValue + 10 + 20;

  System.out.println(strConcatResult);
  
//결과
30ABC1020

//설명
String 타입이 아닌 값도 문자열로 연결할 수 있다.
단, 정수가 String 타입의 변수보다 앞에 있으면 연산된 결과를 반환하게 된다.
  1. concat 메서드
  • 여러 개의 문자열을 연결하는 경우 체이닝 기법으로 호출한다.
  • 해당 메서드는 힙 영역에 합쳐진 문자열을 생성한다.
    따라서, concat()메서드를 여러 번 호출 하는 경우
    상당히 많은 데이터가 힙 영역에 생성되므로 성능이나 속도 면에서 좋지 않다.

→ 세 개 이상의 문자열을 연결하는 경우 + 연산자를 사용하는 것이 좋다.

두 연산자의 null 처리 방법은 아래와 같이 서로 다르다.

  • +연산자는 null을 문자열 "null" 로 처리한다.
  • concat()은 NullPointerException 발생

이외에도 StringBuffer, StringBuilder 클래스를 활용하는 방법도 있다고 한다.

1개의 댓글

comment-user-thumbnail
2023년 7월 23일

좋은 정보 감사합니다

답글 달기