자바
자바 String 클래스
tttck88
2021. 3. 14. 23:01
한번 생성된 String인스턴스가 갖고 있는 문자열은 읽어 올 수만 있고, 변경할 수는 없다.
예를 들어 +연산자를 이용해서 문자열을 결합하는 경우 인스턴스 내의 문자열이 바뀌는 것이 아니라 새로운 문자열이 담긴 String인스턴스가 생성되는 것이다. 연산 시 마다 새로운 문자열을 가진 String인스턴스가 생성되어 메모리 공간을 차지하기 때문에 가능한 한 변경이 가능한 StringBuffer 클래스를 사용하는 것이 좋다.
StringBuffer의 비교
- String 클래스와 달리 equals메서드를 오버라이딩 하지 않았기 때문에 값을 비교하기 위해서는 오버라이딩 된 toString()을 호출해서 String인스턴스를 얻은 다음, 여기에 equals메서드를 사용해야 한다.
StringBuilder
- StringBuffer는 멀티쓰레드에 안전하도록 동기화 되어있다. 동기화는 성능을 떨어뜨리는데 멀티쓰레드로 작성된 프로그램이 아닌 경우, StringBuffer의 동기화는 불필요하게 성능만 떨어뜨리게 된다.
그래서 StringBuffer의 쓰레드의 동기화만 뺀 StringBuilder가 새로 추가되었다.
남궁성,『Java의 정석』,도우출판