[Java] 자바의 정석
[Java] 자바의 정석 / StringBuffer
sweetychocoding
2023. 9. 17. 16:27
728x90
StringBuffer란?
=> 지정된 문자열을 변경할 수 있는 클래스로, 내부적으로 문자열 편집을 위한 버퍼를 가지고 있다.
StringBuffer인스턴스를 생성할 때 그 크기를 지정할 수 있으며, 문자열을 변경할 경우 버퍼의 길이를 넘어서게 되는 것 을 대비하여 버퍼의 길이를 충분히 잡아주는 것이 좋다.
: 배열의 길이는 변경될 수 없으므로 새로운 길이의 배열을 생성한 후에 이전 배열의 값을 복사해야 함.
=> 문자열을 저장하기 위한 char형 배열의 참조변수를 인스턴스변수로 선언해 놓고 있다.
=> StringBuffer클래스는 equals메서드를 오버라이딩하지 않아서 StringBuffer클래스의 equals메서드를 사용해도 등가비교연산자(==)로 비교한 것과 같은 결과를 얻는다.
: StringBuffer인스턴스에 담긴 문자열을 비교하기 위해서는 StringBuffer인스턴스에 toString()을 호출해서 String인스턴 스를 얻은 다음, 여기에 equals메서드를 사용해서 비교해야 한다.
아래 코드는 StringBuffer의 생성자와 메서드에 관련된 예제이다.
package example01;
public class Ex05_Chapter7 {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer("01");
StringBuffer sb2 = sb.append(23);
sb.append('4').append(56);
StringBuffer sb3 = sb.append(78);
sb3.append(9.0);
System.out.println("sb = " + sb);
System.out.println("sb2 = " + sb2);
System.out.println("sb3 = " + sb3);
System.out.println("sb.deleteCharAt(10) = " + sb.deleteCharAt(10));
System.out.println("sb.delete(3, 6) = " + sb.delete(3, 6));
System.out.println("sb.insert(3, \"abc\") = " + sb.insert(3, "abc"));
System.out.println("sb.replace(6, sb.length(), \"END\") = " + sb.replace(6, sb.length(), "END"));
}
}728x90