[Java] String의 concat과 +

concat과 +

String 클래스는 자바에서 매우 특이하게 관리되는 레퍼런스 타입 오브젝트이다. 내부적으로 최적화를 해 두었고 관리되는 방식이 참으로 독특하다. 다음 코드를 보자.

1
2
String string1 = "song";
String string2 = "song";

위 두 코드는 같은 주소를 가리킨다. 이렇게 특이한 방식으로 관리되는 String의 concat() 메소드와 + 연산자를 알아보려고 한다.

concat

concat 메소드는 다른 문자열의 끝에 하나의 문자열을 연결한다. 이 메소드는 메소드에 전달 된 문자열 값이 문자열 끝에 추가된 문자열을 반환한다.

+

+ 연산자는 양쪽의 문자열을 연결하는데 사용된다.

difference of concat and +

Number of arguments the concat method and + operator takes

  • concat 메소드는 문자열의 한 인수만 취하고 다른 문자열과 연결한다.
  • + 연산자는 임의의 수의 인수를 취하고 모든 문자열을 연결한다.

Type of arguments

  • concat 메소드는 문자열 인수만 취한다. 인수에 다른 유형이 주어지면 오류가 발생한다.
  • + 연산자는 모든 유형을 취하여 문자열 유형으로 변환한 다음 문자열을 연결한다.

concat method raises NullPointerException

  • concat 메소드는 문자열이 null과 연결될 때 에러를 던진다.
  • + 연산자는 문자열이 null과 연결될 때 예외를 발생시키지 않는다.

Creates a new String Object

  • concat 메소드는 문자열 길이가 0보다 큰 경우 두 문자열을 연결하고 새 문자열 객체만 반환한다. 그렇지 않다면 동일한 객체를 반환한다.
  • + 연산자는 문자열 길이에 관계없이 매번 새로운 문자열 객체를 생성한다.

Performance

  • 위의 내용을 이해했다면 concat 메소드가 우수하다는 것을 알 수 있다.
Author: Song Hayoung
Link: https://songhayoung.github.io/2020/08/12/Languages/Java/concatAndPlus/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.