[JAVA] java.lang패키지와 유용한 클래스 - StringBuffer클래스

선영·2022년 8월 26일
post-thumbnail

StringBuffer 클래스

  • 문자열을 저장하고, 다루기 위한 클래스
  • String처럼 문자형 배열(char[])을 내부적으로 가지고 있음.
  public final class StringBuffer implements java.io.Serializable {
  	private char[] value; 
    ...
  }  
  • 그러나, String과 달리 내용을 변경할 수 있다. (mutable)
  StringBuffer sb = new StringBuffer("abc"); 
  sb.append("123");  // sb의 내용 뒤에 "123" 을 추가한다. (내용 변경 가능)

StringBuffer 의 생성자

  • 배열은 길이 변경 불가. 공간이 부족하면 새로운 배열 생성해야함.
  • StringBuffer는 저장할 문자열의 길이를 고려해서 적절한 크기로 생성해야함.
  public StringBuffer(int length) {
  	value = new char[length]; 
    shard = false; 
  }
  public StringBuffer() {
  	this(16);  // 버퍼의 크기를 지정하지 않으면 버퍼의 크기는 16이 된다. 
  }
  public StringBuffer(String str) {
  	this(str.length() + 16); 
    append(str);  // 지정한 문자열의 길이보다 16이 더 크게 버퍼를 생성한다. 
  }  
  • StringBufferString과 달리 내용 변경이 가능
  • append() 는 지정된 내용을 StringBuffer에 추가 후, StringBuffer의 참조를 반환
// 1)과 2)는 같은 값
// 1)
StringBuffer sb = new StringBuffer("abc"); 
sb.append("123"); 
ab.append("zz");
// 2)
StringBuffer sb = new StringBuffer("abc"); 
sb.append("123").append("zz"); 
  • StringBuffer는 equals()가 오버라이딩 되어 있지 않다. (주소비교) this = obj
  StringBuffer sb = new StringBuffer("abc"); 
  StringBuffer sb2 = new StringBuffer("abc"); 
  System.out.println(sb==sb2);         // false
  System.out.println(sb.equals(sb2));  // false
  • StringBuffer를 String으로 변환 후에 equals()로 변환해야 함.
String s = sb.toString();          //sb를 String으로 변환
String s2 = sb2.toString(); 
System.out.println(s.equals(s2));  // true

0개의 댓글