본문 바로가기
Java

Stringbuffer 클래스

by Ms.Pudding 2022. 1. 7.

String 클래스의 인스턴스는 한 번 생성되면 그 값을

읽기만 할 수 있고, 변경 할 수 없다.

 

예를 들어 String 길이를 늘리고 싶을 때는

"오늘"+"참"+"좋다"

이런식으로 덧셈 연산자를 이용하여 길이를 늘림

하지만 문자열을 결합하면 결합할 수록 공간의 낭비뿐만 아니라

속도도 매우 느려지게 된다.

 

이러한 단점을 보완한것이 stringBuffer!

이 인스턴스를 사용하면 자유롭게 문자열을 추가할 수 있으며

공간의 낭비도 없고 속도도 빨라진다.

 

참고로 String 클래스 처럼 인스턴스가 한 번 생생되어 값을 변경

할 수 없는 클래스를 불변 클래스 (immutable class)라고 하며,

StringBuffer 클래스와 같이 자유롭게 인스턴스 값을 변경할 수

있는 클래스를 가변 클래스(mutable class)라고 한다.

하나의 객체에 접근하면서 각각의 객체가 서로 영향을

주어서는 안되는 경우에 불변 인스턴스를 사용함 ..


이제 StringBuffer 메소드를 알아보자

 

1.append()

문자 추가

public class StringbufferPractice {
    public static void main(String[] args){
        StringBuffer str = new StringBuffer("java");
        System.out.println("원본 문자열" + str);

        System.out.println(str.append("흥"));
        System.out.println(str.append("뭐야"));
        
    }
}

->

원본 문자열java

java흥

java흥뭐야

 

2.capacity() 

문자열 갯수 확인 

public class StringbufferPractice {
    public static void main(String[] args){
        StringBuffer str1 = new StringBuffer();
        StringBuffer str = new StringBuffer("java");
        System.out.println(str1.capacity());
        System.out.println(str.capacity());

    }
}

->

16 (기본 버퍼칸)

20 (java로 칸을 더 추가함)

 

3. delete()

특정 문자를 삭제함

public class StringbufferPractice {
    public static void main(String[] args){
        StringBuffer str = new StringBuffer("javaOracle");
        System.out.println(str.capacity());
        System.out.println(str.delete(0,4));//index4는 출력 x
        ////위에서 oracle출력되는데, 여기서 0번째 빠져서 racle출력 됨
        System.out.println(str.deleteCharAt(0));

    }
}
 

->

26  ( 16+ 10)
Oracle ( index 4까지 출력안됌 
racle 

 

4.insert() 

인덱스값으로 버퍼 안에 값을 추가함 

public class StringbufferPractice {
    public static void main(String[] args){
        StringBuffer str = new StringBuffer("javaOracle");
        System.out.println(str);
        System.out.println(str.insert(0,"z"));
    }
}

->javaOracle

zjavaOracle

댓글