일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 코딩테스트
- Java
- bottom-up
- Android Studio
- 직무면접
- spring boot
- 다익스트라
- disjoint set
- compiler
- 플로이드 와샬
- 벨만 포드 알고리즘
- kmeans
- 동적계획법
- dto
- 우선순위큐
- 엔테크서비스
- Django
- 음수가 포함된 최단경로
- 유니온 파인드
- 거쳐가는 정점
- 최단경로
- top-down
- Python
- union-find
- 기술면접
- onclick
- BufferedReader
- Controller
- clean code
- scikit-learn
Archives
- Today
- Total
춤추는 개발자
String, StringBuilder, StringBuffer의 차이? 본문
728x90
반응형
1. String 과 StringBuilder, StringBuffer
String과 StringBuilder, StringBuffer의 차이는 동일 객체 내에서 변경이 가능한지의 여부입니다. 먼저, String은 불변의 속성을 갖습니다.
String str = "hello";
str += " world";
str에 world를 추가할 경우, str은 "hello world"라는 새로운 메모리 영역을 가리키게 됩니다. 이때, "hello"는 Garbage로 남아 GC에 의해 사라지게 됩니다. 만약, 문자열의 수정이 빈번할 경우 힙 영역에 임시 Garbage가 쌓여서 메모리 부족이 발생할 수 있습니다.
StringBuilder sb = new StringBuilder();
sb.append("a");
sb.append("b");
String str = sb.toString();
반면에, StringBuilder, StringBuffer는 가변성을 가지고 .append(), .delete() 등의 메소드로 동일 객체내에서 수정이 가능합니다.
2. StringBuilder과 StringBuffer
둘의 가장 큰 차이점은 동기화의 유무입니다.
StringBuilder은 단일 스레드, StringBuffer는 멀티 스레드에서 안전하다는 특징이 있습니다.
📢 추가사항
JDK 1.5버전 이후로 String의 + 연산은 StringBuilder로 변환되어 append() 메서드를 사용하도록 변환됐습니다. 하지만, String의 + 연산은 반복문이나 여러 줄에 걸쳐서 사용하는 경우, 매번 StringBuilder로 변환하기 때문에 비효율적입니다. 즉, 한줄로 선언한 경우에만 성능 최적화가 이루어진다.
728x90
반응형
'Developer's_til > 그외 개발 공부' 카테고리의 다른 글
[객체지향] Java를 Java스럽게 (0) | 2020.10.28 |
---|---|
컴파일러와 인터프리터의 차이? (0) | 2020.10.28 |
Python을 활용한 KNN 알고리즘 (0) | 2020.10.04 |
Python을 활용한 K-means Clustering (0) | 2020.10.04 |
[Java] Scanner와 BufferedReader, 뭘로 입력할까? (0) | 2020.10.01 |