String | StringBuffer, StringBuilder |
내부적으로 char[] 배열을 가지고 있다 | |
불변(immutable) 객체 | 가변(mutable) 객체 |
String은 인스턴스 생성 시 문자열의 내용을 변경할 수 없기 때문에 매번 새로운 객체를 생성해야 하지만, StringBuffer와 StringBuilder는 내부적으로 내용을 변경할 수 있게 되어 있다. 그렇기 때문에 후자의 경우 메모리를 더 효율적으로 사용할 수 있다.
StringBuffer | StringBuilder |
기본적인 메서드 동일 | |
동기화 O | 동기화 X |
멀티 스레드에 안전 | 싱글 스레드에 유리 |
참고로 StringBuffer, StringBuilder의 메서드 중 다음 메서드들은 객체 자신을 반환한다.
- append()
- delete(), deleteCharAt()
- insert()
- replace()
- reverse()
코딩 테스트 문제를 풀 때 별 생각 없이 StringBuilder로 코드를 작성했는데 내용을 이해하고 보니 다르게 느껴졌다. 예를 들어 코딩 테스트는 어차피 단일 스레드 작업이니 동기화를 고려할 필요가 없어 StringBuffer보다 성능이 더 좋을 수 있겠다, sb.append(~).append(); 이렇게 체인으로 연결지을 수 있었던 이유가 append() 메서드가 StringBuilder 객체를 반환했기 때문이었구나 하는 부분이다. 제대로 알지 못한 채로 작성했던 코드의 지식을 메우려니 힘들기도 하지만 흥미롭다.
StringBuilder와 StringBuffer는 무슨 차이가 있는가?
Java에서 String 클래스는 불변성을 갖습니다. 그래서 변하지 않는 문자열을 자주 사용하는 경우엔 좋은 성능을 기대할 수 있습니다. 하지만 문자열에 대한 변경이 자주 일어나는 프로그램에서 Stri
velog.io
[자바] String, StringBuilder, StringBuffer의 차이
* String, StringBuffer, StringBuilder 차이점과 장단점. Java를 사용하면 종종 접하게 되는 문자열 클래스들입니다. (기술면접시 만나게 되는 문제 중 하나.) String, StringBuffer, StringBuilder.. 모두 문자열을 저
12bme.tistory.com
https://zero-iron.tistory.com/68
StringBuilder를 초기화하는 가장 빠른 방법
알고리즘 문제를 풀다 보면 요구되는 형식에 맞게 String을 생성해야 할 때가 있는데 StringBuilder를 사용해서 다른 문자가 요구될때 어떻게 초기화하면 좋을지 고민하곤 한다 결론적으로는 StringBuil
zero-iron.tistory.com
https://soo-vely-dev.tistory.com/233
[Java] 문자열 반복 메서드 repeat (예제 포함)
프로그래머스에서 입력받은 문자열을 일정 횟수만큼 반복하여 출력하는 문제를 접하였습니다. 문제 설명 문자열 str과 정수 n이 주어질 때, str이 n번 반복된 문자열을 만들어 출력하는 코드를 작
soo-vely-dev.tistory.com
'JAVA' 카테고리의 다른 글
[JAVA] comparable, comparator 비교 (0) | 2024.07.03 |
---|---|
[JAVA] System.in.read() (1) | 2024.06.30 |
[JAVA] delete(), deleteCharAt() (0) | 2024.05.07 |
[JAVA] clone(), 얇은 복사와 깊은 복사 (0) | 2024.03.26 |
[JAVA] toString(), String.valueOf()의 차이 (0) | 2024.03.20 |