Java 에서의 String
String 을 java에서 ==로 비교하지 못하는 이유는 java가 operator overloading 을 지원하지 않기 때문이다. (C++ 같은 경우 지원하기 때문에 ==로 비교가 가능함)
한번 초기화되면 string의 내용을 바꿀 수 없다.
for loop 으로 문자열 연결하는 것(+)이 매우 느리다.. immutable 하기 때문에 먼저 공간 할당하고, 복사하여 새 문자열에 추가하는 방식으로 작동하기 때문이다. 따라서 StringBuilder 등을 이용하는 것이 좋다.
하지만 java9 이후부터는 StringConcatFactory 클래스를 사용하고 runtime 시점에 바이트 코드를 생성하기 때문에 StringBuilder 를 사용하는 것보다 오버헤드가 적다. 단순한 문자열 덧셈은 그냥 String concat 해주고, 복잡하거나 반복적인 조합에서는 StringBuilder 를 써주는 것이 좋다(메모리 재할당이 덜 일어난다)