일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
Tags
- 오블완
- goland
- System Design
- Kubernetes
- intellij ide
- body size
- 배포 프로세스
- 대규모 시스템 설계
- 디자인패턴
- 티스토리챌린지
- 사설 ip
- UnBuffered channel
- go
- golang
- http 413
- AWS
- Intellij
- m4 pro
- GoF
- GoF 디자인패턴
- Infra
- 윈도우키보드
- Buffered channel
- 배포 파이프라인
- Logrus
- apollo router
- elasticsearch
- notification system
- 컴포지트패턴
- gitops
Archives
- Today
- Total
Fall in IT.
StringBuffer와 StringBuilder의 차이점 본문
반응형
오늘은 StringBuffer와 StringBuilder의 차이점에 대해 아주 간단한 내용만 알아보도록 하겠습니다.
String 클래스의 특징
- 불변하는 클래스이다. 즉, 한번 생성되어지면 변할 수 없다. String 클래스의 메소드 subString(), concat() 등 모두 새로운 객체를 생성하여 만들어진다.
StringBuffer 클래스의 특징
- 변하는 클래스이다.
append(), insrt(), delete() 등의 메소드를 통하여 StringBuffer 객체가 가지고 있는 문자열을 변경 할 수 있고, 새로운 객체를 생성하지 않고 기존의 문자열을 변경한다.
- 동기화를 지원한다. 즉, 멀티스레딩 환경에서 동기화가 가능하다. (코드를 보면, 각 메소드 별로 synchronized 키워드가 존재한다.)
//객체를 한번만 생성한다.
StringBuffer result = new StringBuffer();
for(int i=0; i < n; i++) {
result.append(target);
}
StringBuilder 클래스의 특징
- 변하는 클래스이다.
- 동기화를 지원하지 않는다. 즉, 멀티스레딩 환경에서는 사용이 불가능 하다. (코드를 보면, 각 메소드에 synchronized 키워드가 존재하지 않는다.)
- 속도가 가장 빠르다.
알아둘점
- StringBuffer는 항상 String 클래스 보다 효율적이라고 생각하기쉽지만 동기화(synchronization)을 보장해야 하기 때문에 단순한 참조에서는 상대적으로 String 보다 나쁜 성능을 보일 수도 있다.
- 동기화에 대한 보장이 필요하지 않을 경우에는 StringBuffer보다 StringBuilder를 사용해야 한다.
- String 을 + 를 활용해 합치는 경우 매번 인스턴스를 생성하기 때문에 성능 상에 이슈가 많다.
이런 성능 이슈를 개선하기위해 JDK 1.5 버전 이후에는 컴파일 단계에서 StringBuilder로 컴파일 되도록 변경되기 때문에 + 를 활용해도 성능 상에 이슈는 없다.
반응형
'프로그래밍언어 > Java' 카테고리의 다른 글
JAVA 디렉터리 또는 파일생성 (0) | 2016.03.10 |
---|---|
static 잘 활용하기 (0) | 2016.03.08 |
타입에 안전한 열거형 enum (0) | 2016.03.03 |
for문(반복문) 사용시 조심해야할 점 (0) | 2016.03.02 |
ByteArray를 이미지 파일로 저장하는 방법 (4) | 2016.02.28 |
Comments