Java StringBuilder, StringBuffer
결과
결과
코드
public static void main(String[] args) {
StringBuilder sb = new StringBuilder(); // 초기화
sb.append("abcd"); // abcd
sb.insert(2, "zzzz"); // abzzzzcd
sb.delete(6,8); // abzzzz
sb.replace(0, 2, "xxxx"); // xxxxzzzz
sb.reverse(); // zzzzxxxx
sb.setCharAt(4, 'y'); // zzzzyxxx
String s = sb.toString();
String s2 = sb.substring(5);
System.out.println("String : " + s);
System.out.println("String2 : " + s2);
}
StringBuilder()
이미지1
- String은 덧셈 연산처럼 수정하였을 때는 이미지1 처럼 기존의 String 객체를 수정하는 것이 아니라 수정한 새 String 객체를 만들어 연결한다.
- 위 같은 과정이 빈번히 반복되다보면 쓰레기 객체가 늘어나 성능을 안좋게 한다.
- 때문의 StringBuilder를 사용하면 버퍼(데이터를 임시로 저장)에 문자열을 저장, 추가, 수정, 삭제 작업을 추가적인 객체를 생성않으며 할 수 있다.
- 사용할 수 있는 메소드는 String에서도 있는 replace, substring들도 있다. 그리고 append, delete, insert와 같은 추가, 삭제하는 메소드들이 있다.
- 수정 작업이 끝난 후 String 변수에 저장하고자 하면은 toString()을 사용하면 된다.
StringBuffer() vs. StringBuilder()
- StringBuffer()와 StringBuilder()의 사용법은 동일하다.
- 단, StringBuffer()은 멀티 스레드 환경에서 사용할 수 있어 스레드에 safe(안전)하다.
- 반면에 StringBuilder()는 단일 스레드 환경에서 사용하도록 설계되어있다.
- 멀티 스레드 환경이 아니라면 StringBuilder()를 사용하는 것이 더 성능이 좋다.
참조
- https://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html
- https://docs.oracle.com/javase/7/docs/api/java/lang/StringBuffer.html
'JAVA > 심화' 카테고리의 다른 글
Java 배열 Arrays 클래스 (0) | 2020.03.26 |
---|---|
Java DecimalFormat 천단위마다 쉼표 입력 (0) | 2020.03.26 |
Java Date, Calendar, SimpleDateFormat 시간 구하기 (0) | 2020.03.25 |
Java max, min, random - 랜덤 수 구하기 (0) | 2020.03.25 |
Java 반올림, 내림, 올림 - round, ceil, floor (0) | 2020.03.24 |