String에서 + operator를 사용하면 어떻게 연산이 될까?

+ operator는 사용했을 때 컴파일러가 다음과 같이 변환한다.

  "ab"+"cde";
  /**
  * 아래와 같이 변환된다.
  * StringBuilder 혹은 StringBuffer로 변환된다.
  */
  StringBuilder(or StringBuffer) ext = new StringBuilder();[or StringBuffer();]
  ext.append("ab").append("cde");

이런 식으로 내부적으로 StringBuilderStringBuffer로 변환하여 사용된다.

Stringimmutable 즉, 상태가 변하지 않기 때문에

+를 그대로 String을 이용할 경우 새로 인스턴스를 생성해야 되는데

이 부분이 성능이 좋지 않다고 한다.

또한 + operator는 String.concat()과 같으며

String.concat() 또한 StringBuilderStringBufferappend()를 이용하여 구현되어 있다.

또, String은 저장할 때 UTF-8이 아닌 UTF-16으로 저장된다.

이 또한 아래의 API에 있으니 들어가면 찾아볼 수 있다.

링크의 APIJava 8String API이다.

String API <= 링크를 클릭하면 Java String API를 확인할 수 있다.

필자는 + operator나 String.concat() 사용시 StringBuilderappend()를 사용하는 줄 알았는데,

API 확인결과 StringBuilderStringBuffer 둘 중 하나를 사용한다고 한다.