자바에서는 문자열을 다루는 클래스로 String, StringBuffer, StringBuilder이라는 3가지 클래스가 있다. 위 3가지 클래스는 모두 문자열을 저장하고 관리하는 클래스인데 어떤 차이점이 있는지 궁금해서 한 번 정리해보기로 했다.
String과 StringBuffer, StringBuilder의 차이점
String객체는 한번 생성되면 객체의 값을 변경할 수 없다. 추가적으로 초기 공간과 다른 값에 대한 연산에서 많은 시간과 자원을 사용하게 된다는 특징이 있다. 반면에 StringBuffer나 StringBuilder의 경우 객체의 공간이 부족해지는 경우 버퍼의 크기를 유연하게 늘려줍니다. 이러한 이유 때문에 String은 불변(immutable)하고 StringBuffer와 StringBuilder는 가변(mutable)이라는 특징을 가진다.
StringBuffer와 StringBuilder의 차이점
StringBuffer와 StringBuilder클래스는 둘 다 크기가 유연하게 변하는 가변적인 특성을 가지고 있다. 하지만 두 클래스는 동기화 지원의 유무가 다릅니다. StringBuffer는 각 메소드 별로 synchronized keyword가 존재하여 멀티 스레드 상태에서 동기화를 지원하고 StringBuilder는 단일 스레드 환경에서만 사용하도록 설계되어 있습니다. StringBuilder가 StringBuffer보다 속도는 더 빠르지만 언제 멀티스레드 환경에서 돌아가지 알지 못하기에 안정적인 StringBuffer로 통일하여 코딩하는것이 좋습니다.
문자열 자료형 정리
String | StringBuffer | StringBuilder | |
가변 여부 | 불변 | 가변 | 가변 |
멀티 쓰레드 지원 | O | O | X |
연산 속도 | 3등 | 2등 | 1등 |
사용할 때 좋은 시점 | 문자열 추가 연산이 적고, 문자열 연산이 적고 멀티스레드 환경일 경우 |
문자열 연산이 많고, 멀티스레드 환경일 경우 |
문자열 추가 연산이 많고, 빠른 연산이 필요한 경우 + 단일 스레드 환경일 경우 |
연산 속도에 관해서 자세하게 알고 싶은 분들은 아래 링크로 가면 자세하게 아실 수 있습니다.
https://madplay.github.io/post/difference-between-string-stringbuilder-and-stringbuffer-in-java
참고문헌
https://dejavuhyo.github.io/posts/string-stringbuffer-stringbuilder/
String, StringBuffer, StringBuilder 차이 및 장단점
1. 개념 Java에서 문자열을 다루는 대표적인 클래스로 String, StringBuffer, StringBuilder가 있다.
dejavuhyo.github.io
https://madplay.github.io/post/difference-between-string-stringbuilder-and-stringbuffer-in-java
자바 String, StringBuilder 그리고 StringBuffer 성능 차이 비교
자바에서 String과 StringBuilder 그리고 StringBuffer의 차이는 무엇일까? 그리고 제일 빠른 연산 속도는 어떤 것일까?
madplay.github.io
'JAVA > JAVA' 카테고리의 다른 글
[JAVA+DB] DataSource 진짜 간단 정리 (0) | 2024.08.05 |
---|---|
[Java] NumberFormat클래스 정리 (0) | 2024.07.12 |
사용자 입/출력과 버퍼(butter) - nextInt() 사용 시 주의 점 (0) | 2024.03.11 |
추상 클래스와 인터페이스 정리 (0) | 2024.03.10 |
래퍼 클래스(Wrapper class) (0) | 2024.03.10 |