[Java] StringBuffer클래스와 StringBuilder클래스

HONGKYUMIN (ANTHONY)·2022년 8월 19일
0

StringBuffer클래스란?

String 클래스와 달리, 인스턴스를 생성할 때 지정된 문자열 변경을 가능하게 해주는 클래스이다.
내부적으로 문자열 편집을 위한 버퍼(buffer)를 가지고 있으며, StringBuffer 생성시 그 크기를 지정 할 수 있다.(디폴트 사이즈는)

🧵StringBuffer의 생성자

1
StringBuffer sb = new StringBuffer();
cs


🧵StringBuffer의 주요 메소드

  • append( )
    1
    2
    StringBuffer sb = new StringBuffer("abc");
    System.out.println( sb.append("def").append.("ghi") ); //abcdefghi
    cs
    append( )는 반환 타입이 StringBuffer인데 자신의 주소를 반환한다. 👉 하나의 StringBuffer인스턴스에 대해 연속적인 append()호출이 가능한 이유.

  • toString( )
    1
    2
    StringBuffer sb1 = new StringBuffer("abc");
    String s1 = sb.toString();
    cs
    StringBuffer 타입을 String으로 변환 해준다.

StringBuffer의 비교

1
2
3
4
5
StringBuffer sb1 = new StringBuffer("abc");
StringBuffer sb2 = new StringBuffer("abc");
 
System.out.println(sb1 == sb2); //false
System.out.println(sb1.equals(sb2)); //false
cs

String클래스에서는 equals메소드를 오버라이딩해서 문자열의 내용을 비교하도록 구현되어 있지만, StringBuffer클래스는 equals 메소드를 오버라이딩 하지 않기 때문에,
StringBuffer클래스의 equals 메소드를 사용해도 ==(등가비교연산자)로 비교한 것과 같은 결과이다.

👉 toString()메소드로 변환 후 비교해주자.

1
2
3
4
String s1 = sb1.toSting();
String s2 = sb1.toSting();
 
System.out.println(sb1.equals(sb2)); //true
cs

  • charAt( )
    1
    2
    StringBuffer sb = new StringBuffer("abc");
    char c = sb.charAt(2); // c = 'c'
    cs
    지정된 위치(index) 의 문자를 반환한다.

  • deleteCharAt( ) & delete(int start, int end)
    1
    2
    3
    4
    5
    StringBuffer sb = new StringBuffer("0123456");
    sb.deleteCharAt(2); // sb = "023456"
     
    StringBuffer sb1 = new StringBuffer("0123456");
    sb1.delete(36); // sb1 = "0126"
    cs
    지정된 위치의 문자를 제거한다.

  • setCharAt( int index, char ch )
    1
    2
    StringBuffer sb = new StringBuffer("0123456");
    sb.setCharAt(5'P'); // sb = "01234P6"
    cs
    지정된 위치의 문자를 주어진 문자(ch)로 변경한다.

  • insert(int pos, 값)
    1
    2
    StringBuffer sb = new StringBuffer("0123456");
    sb.insert(4,"."); //sb = "0123.456"
    cs
    지정된 pos(위치)에 값을 추가한다.

  • reverse( )
    1
    2
    StringBuffer sb = new StringBuffer("0123456");
    sb.reverse(); //sb = "6543210"
    cs
    StringBuffer인스턴스에 저장되어 있는 문자열의 순서를 거꾸로 나열한다.



StringBuilder클래스란?

👉 StringBuilder는 멀티 쓰레드에 안전(thread safe)하도록 동기화 되어있다.

동기화가 StringBuffer의 성능을 떨어뜨린다.
멀티쓰레드로 작성된 프로그램이 아닌 경우, StringBuffer의 동기화는 불필요하게 성능만 떨어뜨리게 된다.

그래서 StringBuffer에서 쓰레드의 동기화만 뺀 StringBuilder가 탄생하였다.

🧶StringBuffer의 생성자

1
StringBuilder sb = new StringBuilder( );
cs
이외에 나머지 기능은 같다.
profile
매일매일 성장하는 개발자

0개의 댓글