[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