Be ready to study forever - 개발자 꿈나무
[JAVA 문법] java.lang패키지 - StringBuffer클래스 와 StringBuilder클래스 본문
3. StringBuffer 클래스와 StringBuilder 클래스
String으로 생성된 인스턴스는 immutable(변경불가능한)이지만 StringBuffer로 생성된 인스턴스는 append, delete등 수정이가능하며 Buffer를 가지고 있다. 기본적으로 비슷한 내용이면 내부적으로 char[]배열을 가지고 있다.
* buffer란 완충하기 위한 임의의 값 예를들면 동영상의 버퍼링은 원활한 비디오 스트림을 위해 일정이상의 buffer를 가지며 이를 버퍼링이라고 한다.
*StringBuffer의 인스턴스를 생성할 때 충분한 buffer를 생성해 주는 것이 좋다.
3.1 StringBuffer의 생성자
버퍼의 크기를 생성자에서 지정해 주지 않는다면 기본버퍼는 매개변수 스트링 크기 + 16개 char배열이 된다.
3.2. StringBuffer와 String의 비교
String클래스는 equals()가 오버라이드 되어 주소값이 아닌 문자열 값을 비교하지만, StringBuffer는 equals가 Object클래스의 equals와 같다. 하지만 toString()은 String클래스처럼 오버라이드 되어있어서 즉시 사용가능하다.
|
String |
StringBuffe |
equals( ) |
오버라이드 됨 |
오버라이드안 됨 |
toString( ) |
오버라이드 됨 |
오버라이드 됨 |
3.3. StringBuffer클래스의 생성자와 메서드
3.4. StringBuilder란?
StringBuffer는 멀티스레드 환경에서 안전하도록 동기화 되어있는데, 동기화는 성능을 떨어트린다. 싱글스레드 프로그램의 경우에는 StringBuffer는 불필요하게 성능을 떨어트리는 요소이다. 이를 해결하기위해 StringBuffer에서 동기화만 뺀 StringBuilder를 쓰는 경우가 많다. 동기화만 제외하면 StringBuffer와 StringBuilder는 동일해서 StirngBuffer부분을 StringBuilder로만 바뀌도 바로 작동이 가능하다.
'Programming > JAVA' 카테고리의 다른 글
[JAVA 문법]Collection Framework - Lists (0) | 2020.07.28 |
---|---|
[JAVA 문법] java.lang패키지 - Math클래스, Wrapper클래스 (0) | 2020.07.25 |
[JAVA 문법] java.lang패키지 - String 클래스 (0) | 2020.07.25 |
[JAVA 문법] java.lang패키지 - Object클래스 (0) | 2020.07.25 |
[JAVA문법] 예외처리 (0) | 2020.07.24 |