일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- Java8 in action
- web
- SERVLET
- head first
- 자바8인액션
- CQRS
- spring boot
- Template Method Pattern
- Design Pattern
- 디자인 패턴
- spring
- domain
- facade pattern
- Clean Code
- spring Batch
- Was
- Java 8 in action
- 자바
- Java
- Java8
- 스트림
- ddd
- 클린코드
- 자바의 신
- jsp
- 자바8
- Java in action
- Stream
- AWS101
- 패스트캠퍼스
Archives
- Today
- Total
주난v 개발 성장기
String, StringBuilder, StringBuffer 차이 본문
intro..
개발자 일을 시작하면서, 자바 기초책을 읽는다는 것은 자존심이 상할 때가 있었다.
그러나 결국 자바의 기초가 중요하다고 생각하며 자바의 신 을 읽게 되었다.
읽는 도중 String, StringBuilder, StringBuffer 차이의 언급을 보고 해당 Post를 작성하게 되었다.
공통점
※ 단순히 보면 3가지 모두 문자열을 저장하고 관리하는 클래스
차이점
※ String vs StringBuilder, StringBuffer
* String : immutable 불변 객체
* StringBuilder, StringBuffer : mutable 가변 객체
※ StringBuilder vs StringBuffer
* StringBuilder는 Synchronized가 걸려있지 않다.
* StringBuffer는 Synchronized가 걸려있다.
* 따라서, StringBuilder가 StringBuffer보다 속도측면에서는 빠르나, 안정성이 낮다.
코드 비교
public synchronized StringBuffer append(Object var1) {
this.toStringCache = null;
super.append(String.valueOf(var1));
return this;
}
public StringBuilder append(String var1) {
super.append(var1);
return this;
}
단순 String +을 조심하자!
String url = "https://"
url += "naver.com"
코드만 본다면 아무 문제 없다.!!
but...
조금 세세히 들어가보면, stack 영역에 생성된 url 변수가 heap영역의 https://를 가리킨다.
여기에 url += 를 하면 기존 https://에 값이 붙는 것이 아니라, 새로운 heap 영역에 더하기 연산을 수행한 결과가 할당 된다.
기존 heap 영역에 할당된 https://는 참조하지 않는 객체가 되고, 가비지 컬렉터의 대상이된다.
필자가 내린 결론
- 지역변수 형태로 사용하면 StringBuilder를 사용하여 append하고, 클래스 변수나 인스턴스 변수로 사용한다면 StringBuffer를 사용
- 속도 측면에서는 StringBuilder > StringBuffer > String
- 연산이 필요한 경우에는 StringBuilder나 StringBuffer를 사용하는 것을 권장
** 부정확한 정보나 다른 의견이 있으시면, 피드백 부탁드립니다.
'개발 성장기 > JAVA' 카테고리의 다른 글
[자바 8인 액션] 4장. 스트림 소개 (0) | 2020.07.05 |
---|---|
[자바 8인 액션] 3장. 람다 표현식 (0) | 2020.07.01 |
[자바 8 인 액션] 2장. 동작 파라미터화 코드 전달 (0) | 2020.06.17 |
[자바 8 인 액션] 1장. 자바 8을 눈여겨봐야 하는 이유 (0) | 2020.06.13 |
[자바의 신] 1 ~ 13장 (0) | 2019.12.08 |