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 |