아무 값도 가지고 있지 않은 StringBuffer 객체를 생성
StringBuffer sb = new StringBuffer();
// 해당 스트링 버퍼에 "hello", 공백, "world"를 차례대로 추가
sb.append("hello");
sb.append(" ");
sb.append("world");
// StringBuffer에 추가된 값을 toString() 메소드를 이용하여 반환
String str = sb.toString();
System.out.println(str);
- 출력결과: hello world
StringBuffer 가 가지고 있는 메소드들은 대부분 자기 자신, this를 반환
StringBuffer sb2 = new StringBuffer();
StringBuffer sb3 = sb2.append("hello");
if(sb2 == sb3) {
System.out.println("sb2 == sb3");
}
- 자기 자신의 메소드를 호출하여 자기 자신의 값을 바꿔나가는 것을 메소드체이닝 이라고 한다.
메소드 체이닝(Method Chaining)
자기자신을 리턴하여 계속해서 자신의 메소드를 호출하는 방식
- StringBuffer 클래스는 메소드 체인 방식으로 사용할 수 있도록 만들어져 있다.
String str2 = new StringBuffer().append("hello").append(" ").append("world").toString();
System.out.println(str2);
- 앞에서 5줄로 작성했던 코드를 위와 같이 한 줄로 수정할 수 있습니다.
- StringBuffer는 append 메소드 외에도 길이를 구하거나, 자르거나 등의 다양한 메소드들을 가지고 있습니다.
🦛 실습
StringBufferExam의 randomName 메소드는 임의의 이름과 성을 고른 다음, 이들을 조합해서 임의의 이름을 만들어냅니다. 22번째 줄에서 메소드체이닝을 이용해 sb에 firstName, 공백(""), lastName을 붙이고, 마지막에 toString()을 붙여서 String type의 return을 하도록 제출해 보세요.
StringBuffer 의 메소드체이닝에 대해 알아보고 문제를 해결해봅시다.
- StringBuffer가 가지고 있는 메소드 들은 대부분 자기 자신, this를 반환합니다. 때문에 자기 자신의 메소드를 호출하여 자기 자신의 값을 바꿔나갈 수 있습니다. 이러한 방법을 메소드체이닝 이라고 합니다.
StringBuffer sb = new StringBuffer();
sb.append("hello"); // 해당 스프링 버퍼에 "hello", 공백, "world"를 차례대로 추가
sb.append(" ");
sb.append("world");
String str = sb.toString(); // StringBuffer을 toString() 메소드를 이용하여 반환
이 다섯 줄을 메소드체이닝을 이용하여 한 줄로 수정할 수 있습니다.
String str2 = new StringBuffer().append("hello").append(" ").append("world").toString();
import java.util.Random;
public class StringBufferExam{
public String randomName(){
StringBuffer sb = new StringBuffer();
String[] firstNames = {"Tod", "John", "Michael"};
String[] lastNames = {"Smith", "Brown", "Davis"};
// 0~2 사이의 임의의 숫자를 골라서
int random1 = new Random().nextInt(3);
// 랜덤하게 이름을 뽑는다.
String firstName = firstNames[random1];
// 0~2 사이의 임의의 숫자를 골라서
int random2 = new Random().nextInt(3);
// 랜덤하게 성을 뽑는다.
String lastName = lastNames[random2];
// sb에 이름(fistName) 공백(" ") 성(lastname) 순으로 append해 보세요.
// 단 메소드 체이닝을 이용해야 합니다.
return sb.append(firstName).append(" ").append(lastName).toString();
}
public static void main(String[]args) {}
}
'공부 > Java' 카테고리의 다른 글
Math (0) | 2024.06.25 |
---|---|
스트링 클래스의 문제점 (0) | 2024.06.25 |
java.lang 패키지/오토박싱 (0) | 2024.06.25 |
Object와 오버라이딩 (0) | 2024.06.25 |
문자열 뒤집기 (Java String reverse) (0) | 2023.05.08 |