블로그를 이전하였습니다. 2023년 11월부터 https://bluemiv.github.io/에서 블로그를 운영하려고 합니다. 앞으로 해당 블로그의 댓글은 읽지 못할 수 도 있으니 양해바랍니다.
반응형
String
String은 불변성(Imutable
)을 가진 객체로 +
연산자를 통해 문자열을 생성하는 경우, 새로운 문자열을 반환한다.
String greet = "Hello";
System.out.println(greet.hashCode());
greet += " World";
System.out.println(greet.hashCode());
69609650
-862545276
+ 연산 후 주소값이 달라짐. 즉, 가리키는 문자열이 달라짐
StringBuilder & StringBuffer
StringBuilder
와 StringBuffer
는 String에 문자열을 추가하면 새로운 객체를 반환하는 단점을 보완하여 만들어진 클래스이다.
StringBuilder
와 StringBuffer
는 버퍼(Buffer
)에 데이터를 임시로 저장하고 있고,
toString()
메소드를 통해 만들어진 전체 문자열을 반환한다. 그래서, 둘 다 추가/수정/삭제에 용이하다는 장점이 있다.
StringBuilder sb = new StringBuilder("Hello");
sb.append(" World");
// 전체 문자열 출력
System.out.println(sb.toString()); // Hello World
// 문자열 삽입
sb.insert(11, "!");
System.out.println(sb.toString()); // Hello World!
// 문자열 교체
sb.replace(6, 11, "Java");
System.out.println(sb.toString()); // Hello Java!
// 문자열 삭제
sb.delete(5, 10);
System.out.println(sb.toString()); // Hello!
Hello World
Hello World!
Hello Java!
Hello!
- StringBuilder나 StringBuffer나 사용방법은 동일하다
StringBuilder와 StringBuffer의 차이점
StringBuilder
는 동기화를 지원하지 않기 때문에, 단일 스레드 환경에서 사용StringBuffer
는 동기화를 지원하기 때문에, 멀티 스레드 환경에서 사용
성능으로 봤을때는 StringBuilder
가 2배가량 좋기 때문에, 단일 스레드 환경이라면 StringBuilder
를 사용하는 것이 좋다.
삽입 성능 비교
관련 글
2021/03/07 - [Language/JAVA] - Java - String Pool에 대해서
반응형
'Language > JAVA' 카테고리의 다른 글
Java - equals()와 hashCode()의 관계 (0) | 2021.03.07 |
---|---|
Java - String Pool에 대해서 (0) | 2021.03.07 |
JVM GC 동작 순서와 GC 종류(Serial / Parallel / CMS / G1 GC ) (0) | 2021.03.07 |
JVM GC(Garbage Collector) 구조 (0) | 2021.03.07 |
JVM 메모리 (Runtime Data Area) (0) | 2021.03.07 |