Be ready to study forever - 개발자 꿈나무

[JAVA 문법] java.lang패키지 - StringBuffer클래스 와 StringBuilder클래스 본문

Programming/JAVA

[JAVA 문법] java.lang패키지 - StringBuffer클래스 와 StringBuilder클래스

루눌룹 2020. 7. 25. 16:32

3. StringBuffer 클래스와 StringBuilder 클래스

String으로 생성된 인스턴스는 immutable(변경불가능한)이지만 StringBuffer로 생성된 인스턴스는 append, delete등 수정이가능하며 Buffer를 가지고 있다. 기본적으로 비슷한 내용이면 내부적으로 char[]배열을 가지고 있다.

* buffer란 완충하기 위한 임의의 값 예를들면 동영상의 버퍼링은 원활한 비디오 스트림을 위해 일정이상의 buffer를 가지며 이를 버퍼링이라고 한다.

*StringBuffer의 인스턴스를 생성할 때 충분한 buffer를 생성해 주는 것이 좋다.

3.1 StringBuffer의 생성자

버퍼의 크기를 생성자에서 지정해 주지 않는다면 기본버퍼는 매개변수 스트링 크기 + 16char배열이 된다.

3.2. StringBufferString의 비교

String클래스는 equals()가 오버라이드 되어 주소값이 아닌 문자열 값을 비교하지만, StringBufferequalsObject클래스의 equals와 같다. 하지만 toString()String클래스처럼 오버라이드 되어있어서 즉시 사용가능하다.

 

String

StringBuffe

equals( )

오버라이드 됨

오버라이드안 됨

toString( )

오버라이드 됨

오버라이드 됨

 

3.3. StringBuffer클래스의 생성자와 메서드

3.4. StringBuilder?

StringBuffer는 멀티스레드 환경에서 안전하도록 동기화 되어있는데, 동기화는 성능을 떨어트린다. 싱글스레드 프로그램의 경우에는 StringBuffer는 불필요하게 성능을 떨어트리는 요소이다. 이를 해결하기위해 StringBuffer에서 동기화만 뺀 StringBuilder를 쓰는 경우가 많다. 동기화만 제외하면 StringBufferStringBuilder는 동일해서 StirngBuffer부분을 StringBuilder로만 바뀌도 바로 작동이 가능하다.

Comments