Java
문자열 클래스
KimJye
2020. 1. 15. 01:10
String
this 문자열을 수정하는 것이 아니고, 수정된 새 문자열 객체를 리턴한다. this 문자열은 수정되지 않는다(immutable). 연산시 새로운 메모리에 할당됨.
equals 메소드가 재정의가 되어있다.
StringBuilder
내부 문자열을 직접 수정한다(mutable). Thread Safe하지 않다.
StringBuilder append()에서 리턴타입이 StringBuilder인 이유는 메소드 체이닝 기법을 사용하기 위해서다.
또한 equals 메소드가 재정의가 안됐다. 이유는 문자열을 조립해서 생성할 때만 잠깐 StringBuilder 객체를 사용하라는 의미에서 equals 메소드가 재정의 되지 않았다.
따라서 문자열을 조립해서 생성할 때만 잠깐 StringBuilder 객체를 사용하고, 문자열 조립이 완성되자 마자, toString 메소드를 호출하여 String 객체로 변환해서 사용해야 한다.
StringBuffer
내부 문자열을 직접 수정한다(mutable). Thread Safe하다.
thread safe 하다는 말은 멀티 스레드(multi-thread)로 실행되어도 안전하다는 말