-
4. StringBuilder & StringBuffer 클래스 다루기프로그래밍언어/Java(초급) 2020. 3. 27. 02:26
앞에서 배운것 처럼 문자열 결합시 새로운 인스턴스가 계속해서 생겨나기 때문에 for 문을 돌면서 지속적으로 문자열을 결합하는 형태의 프로그램은 성능에 큰 영향을 미친다.
이 경우StringBuffer와StringBuilder클래스는 기본적으로 동일한 클래스 이며 문자열을 결합하는데 유용하다. 두 클래스의 차이는멀티스레드에 안전하게 처리되었는지의 차이로StrinfBuffer의 경우Thread safe로 멀티스레드 처리에 안전하지만 성능이 저하될 수 있다. 따라서 멀티스레드 처리가 없는 프로그램이라면 StringBuilder 유리하다고 할 수 있다.
import java.util.*; public class StringBuilder { public static void main(String[] args) { StringBuilder strBuf =new StringBuilder("AB"); /*문자 더하기*/ strBuf.append(25); /*차례대로 문자 더하기*/ strBuf.append('Y').append(true); //this반환 이기때문에 인스턴스를 생성하지 않는다. System.out.println(strBuf); /*인덱스 문자 삽입*/ strBuf.insert(1,false); strBuf.insert(strBuf.length(), 'Z'); System.out.println(strBuf); StringBuilder strBuf2 = new StringBuilder("ABCDEFG"); /*인덱스문자 삭제*/ System.out.println(strBuf2.deleteCharAt(0)); /*역순 출력*/ System.out.println(strBuf2.reverse()); } } /*output==================== AB25Ytrue ABfalse25YtrueZ BCDEFG GFEDCB */
StringBuilder
문자열의 저장 및 변경을 위한 메모리공간을(버퍼)내부에 지니는데 이 크기는 자동으로 조절되는 특징이 있다.
StringBuilder은 버퍼의 크기를 스스로 확장한다.
내부에 존재하는 버퍼는 자동으로 크기가 증가하도록 설계되어있다. 그러나 필요에 따라서는 그 크기를 조절할수 있다.
- public StringBuilder()
- public StringBuilder(int capactiy) //capacity개의 문자 저장 버퍼 생성
- public StringBuilder(String str) // str.length() + 16개의 문자 저장버퍼생성
버퍼의 크기를 확장하는 작업은 많은 연산이 요구되는 작업이므로 가급적이면 필요로하는 버퍼의 크기를 미리 할당하는 것이 성능에 도움이 된다.
reference
https://docs.oracle.com/javase/8/docs/api/index.html
'프로그래밍언어 > Java(초급)' 카테고리의 다른 글
2. OOP(Object Oriented Programming) 상속 (0) 2020.04.02 1. OOP(Object Oriented Programming) 캡슐화 (0) 2020.04.01 5. Collection 프레임워크 (ArrayList vs LinkedList) (0) 2020.03.29 3. Java 문자열(String) 다루기 (0) 2020.03.27 1. BufferReader VS Scanner 차이점 (0) 2020.03.27