String 클래스는 여러 개의 문자열을 더할 때 매번 새로운 인스턴스를 생성해야 하는데 만들어야 하는 문자열이 많을 경우 인스턴스의 생성 또한 그만큼 이루어지기 때문에 매우 비효율적이다.
이때, StringBuilder를 사용하면 이 문제를 해결 할 수 있다.
append()
의 인자로 연결하고자 하는 문자열을 넣어서 StringBuilder의 객체를 통해 호출한다.toString()
메서드를 사용하면 된다. String 클래스의 인스턴스는 한번 생성되면 그 값을 읽기만 할 수 있고, 변경할 수는 없다. 하지만 StringBuffer 클래스의 인스턴스는 그 값을 변경할 수도 있고, 추가할 수도 있다.
StringBuffer 클래스는 내부적으로 버퍼(buffer)라고 하는 독립적인 공간을 가진다.
버퍼 크기의 기본값은 16개의 문자를 저장할 수 있는 크기인데, 생성자를 통해 별도로 설정할 수 있다.(하지만 인스턴스 생성 시 사용자가 설정한 크기보다 더 저장할 수 있도록 여유 있는 크기로 생성된다.)
append()
: 인수로 전달된 값을 문자열로 변환한 후, 해당 문자열의 마지막에 추가한다. (String 클래스의 concat()
과 같은 결과를 반환하지만 , 내부적인 처리속도가 훨씬 빠르다.)
capacity()
: StringBuffer 인스턴스의 현재 버퍼 크기를 반환한다.
StringBuffer str = new StringBuffer("jisoo");
System.out.println(jisoo.capacity());
// 이 경우 기본적으로 생성되는 여유 버퍼 크기인 16에 문자의 길이 5를 더한 총 21개의 문자를 저장할 수 있는 버퍼가 생성된다.
delete()
: 전달된 인덱스에 해당하는 부분 문자열을 해당 문자열에서 제거한다.deleteCharAt()
: 메서드를 사용하면 특정 위치의 문자 한 개만 제거할 수 있다.insert()
: 인수로 전달된 값을 문자열로 변환한 후, 해당 문자열의 지정된 인덱스 위치에 추가한다.