우당탕탕 좌충우돌 개발일기
StringBuffer(스트링버퍼) 본문
스트링 클래스는 자기 자신이 변하지 않는 불변의 클래스이다.
반면, 스트링버퍼 클래스는 자기 자신이 변하는 클래스이다.
💻 실습
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 |