티스토리 뷰
String
String 클래스는 불변(immutable) 객체입니다.
문자열 연산이 많은 프로그래밍에서는 계속해서 인스턴스를 생성하므로 성능이 떨어지게 됩니다.
기존의 문자열은 garbage collection에 의해 제거되어야 합니다.
불변하기 때문에 조회 연산에는 타 클래스보다 빠릅니다.
불변하므로 멀티쓰레드 환경에서 동기화를 신경쓰지 않아도 됩니다.
StringBuffer, StringBuilder
두 클래스는 문자열 연산이 자주 발생 할 때 문자열이 변경 가능한 객체이기 때문에 성능적으로 유리합니다.
StringBuffer, StringBuilder의 차이점
둘의 차이점은 동기화 지원 유무입니다.
동기화를 고려하지 않는 상황에서는 Theard-safe할 필요가 없기 때문에 StringBuilder를 사용하는 것이 좋습니다.
동기화가 필요한 멀티쓰레드 환경에서는 StringBuffer를 사용하는 것이 좋습니다.
JDK 1.5 버전 이상에서부터는 +연산으로 작성하더라도 String이 StringBuilder로 컴파일하게 되었습니다.
그러나 String 객체를 생성하는 부분은 동일하므로 문자열을 더할 때에는 객체를 계속 추가한다는 사실에는 변함이 없습니다.
그렇기 때문에 StringBuffer, StringBuilder의 사용이 필요합니다.
예시로 백준 문제(문자열 폭발)가 있다.
Baekjoon 9935 문자열 폭발 - 메모리 초과
더 깔끔한 노션을 원한다면 Baekjoon 9935 문자열 폭발 - 메모리 초과 String 메모리 초과 때문에 마음 고생을 하게 했던 문제. www.notion.so 9935번: 문자열 폭발 첫째 줄에 문자열이 주어진다. 문자열의 ��
kkoon9.tistory.com
'JAVA' 카테고리의 다른 글
java에서 멀티쓰레드 [2] Executors와 ExecutorService (0) | 2022.02.07 |
---|---|
java에서 멀티쓰레드 [1] Thread와 Runnable (0) | 2022.02.07 |
Consumer (0) | 2022.02.04 |
Disposable (0) | 2022.02.04 |
map vs flatMap in stream (0) | 2022.02.04 |
- Total
- Today
- Yesterday
- Spring Boot
- C++
- kkoon9
- Java
- BAEKJOON
- 이팩티브 자바
- 알고리즘
- node.js
- JPA
- Algorithm
- 디자인패턴
- Kotlin
- Effective Java
- 코테
- 프로그래머스
- 디자인 패턴
- Spring
- 클린 아키텍처
- MSA
- 정규표현식
- 테라폼
- kotest
- 클린 코드
- 백준
- BOJ
- AWS
- programmers
- Olympiad
- 이펙티브 자바
- 객체지향
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |