우당탕탕 좌충우돌 개발일기

StringBuffer(스트링버퍼) 본문

Programming/JAVA

StringBuffer(스트링버퍼)

성동구불주먹 2024. 10. 15. 17:44

스트링 클래스는 자기 자신이 변하지 않는 불변의 클래스이다.

반면, 스트링버퍼 클래스는 자기 자신이 변하는 클래스이다.

 


 

💻 실습

1. 아무것도 가지지 않은 스트링 버퍼를 생성한다.

2. 만들어진 스트링 버퍼가 가진 append 메서드로 문자열을 추가한다.

3. 스트링 버퍼가 가진 toString(반환 타입이 스트링(string))메서드를 이용해서 문자열로 변환한다.

package org.example;

public class StringBufferExam {

    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer();
        sb.append("hello");
        sb.append(" ");
        sb.append("world");

        String str = sb.toString();

        System.out.println(str);

    }
}

 

[출력 결과값]

hello world

 

짜잔 잘 나온다.

 


 

이번엔 스트링버퍼를 2개 더 생성해서 값을 비교해보자.

1. 스트링버퍼 생성(sb2)

2. 스트링버퍼 생성(sb3)

3. sb3은 sb2에 "hello" 문자열을 더한 값이다.

4. sb2와 sb3가 같은 값을 갖는지 출력해보자

package org.example;

public class StringBufferExam {

    public static void main(String[] args) {
        StringBuffer sb2 = new StringBuffer();
        StringBuffer sb3 = sb2.append("hello");
        
        if(sb2 == sb3)
            System.out.println("sb2 == sb3");
    }
}

 

[출력 결과값]

sb2 == sb3

 

sb2가 가지고 있는 append 메서드를 이용해서 sb2에 "hello"라는 문자열을 추가했고, 이 때 append 메서드는 자기 자신(this)을 반환한다.

반환된 값을 sb3이 받아냈기 때문에 값이 같다고 출력된다.

 

💡 이렇게 자기 자신을 반환하는 것을 이용해서, 계속해서 자기 자신의 메서드를 호출하면서 자기 자신의 값을 바꿔나가는 방식을 '메서드 체이닝(Method Chaining)'이라고 한다.

 

스트링 버퍼 클래스는 이런 메서드 체이닝 방식을 사용할 수 있도록 설계되어 있다.

자바에서는 이런 방법들은 자주 사용되는 문법 형식이기때문에 기억하도록 하자!

 


 

그럼 마지막으로, 메서드 체이닝을 이용한 코드를 실행해보자.

 

1. new StringBuffer() 를 할당할 스트링 형식의 str2를 선언한다.

2. new StringBuffer() 뒤에 . 을 붙이면 스트링버퍼가 가지고 있는 메서드를 사용할 수 있게된다.

3. 마지막에는 toString()을 호출해서 스트링 값으로 변환해준다.

package org.example;

public class StringBufferExam {

    public static void main(String[] args) {
        String str2 = new StringBuffer().append("hello").append(" ").append("world2").toString();
       
        System.out.println(str2);
    }
}

 

[출력 결과값]

hello world2

 

짝짝짝

 


 

💛 스트링버퍼는 append, toString 메서드 외에도 길이를 구하는 length(), 자르는 trim() 등... 다양한 메서드를 가지고 있다.

그래서 스트링버퍼 클래스를 잘만 이용한다면 스트링 클래스가 가진 단점들을 보완해서 사용이 가능하다.

반응형

'Programming > JAVA' 카테고리의 다른 글

Math 클래스  (1) 2024.10.16
스트링(String) 클래스의 문제점  (0) 2024.10.16
java.lang 패키지/오토박싱(Autoboxing)  (0) 2024.10.14
Object와 오버라이딩(Overriding)  (0) 2024.10.10
InputStream / OutputStream(byte단위)  (1) 2024.06.11