코딩을 하면서 문자열을 다루는 일은 엄청 많다. 하지만 3개의 클래스 전부 String, StringBuilder, StringBuffer 문자열을 다루는 클래스나, 정확히 어떤 차이를 갖고있는지 잘 알고 사용해야한다.
String 불변 클래스
String은 한번 생성되면 내용을 변경할수 없는 불변 클래스 이기떄문에 아래 예제처럼
문자의 결합을 하면 새로운 문자로 바뀌고 새로운 String의 인스턴스가 생성된다. 이러한 + 를 이용한 문자 결합은 성능이 떨어진다.
String a = "abc"
String b = "d"
a = a+b ;
StringBuffer 와 StringBuilder 가변 클래스
String의 불편 클래스와 달리 StringBuffer 와 StringBuilde는
객체의 공간이 부족해지는경우 버퍼의 크기를 유연하게 늘려서 가변적이라는 차이가있다
문자열 결합이나 변경이 많다면 StringBuffer 클래스르 사용하는것이 좋다.
그럼 StringBuffer And StringBuilder 의 차이점은 뭐냐?
StringBuffer는 각 메서드별로 Synchronized Keyword가 존재하여, 멀티스레드 환경에서도 동기화를 지원.
반면, StringBuilder는 동기화를 보장하지 않는다.
결론
StringBuffer는 스레드의 안전한 프로그램이 필요할떄
StringBuilder는 스레드에 안전한지 여부가 전혀 관계 없는 프로그램을 개발할 때 사용하면 좋다.
'Develop > Java' 카테고리의 다른 글
[Java] JVM , 자바 프로그램 실행 과정 (0) | 2024.08.27 |
---|---|
[Java] 자료구조 Arraylist/LinkedList 특징 (0) | 2024.07.10 |
[Java/Error] 기본 생성자가 필요한 이유 (0) | 2024.03.02 |
[Java ] 컬렉션 프레임워크 map 이해하기 (1) | 2024.01.27 |