Back-End/Java(자바)
스트링버퍼 클래스
FIF
2019. 11. 5. 14:27
반응형
String 클래스는 자기 자신이 변하지 않는 불변클래스이다.
StringBuffer 클래스는 자기 자신이 변하는 클래스이다.
StringBuffer sb = new StringBuffer();
sb.append("hello");
sb.append(" ");
sb.append("world");
String str = sb.toString();
System.out.println(str);
StringBuffer sb2 = new StringBuffer();
StringBuffer sb3 = sb2.append("hello");
if(sb2 == sb3)
System.out.println("sb2 == sb3");
sb2.append의 반환값은 StringBuffer형(자기자신 this)이다.
StringBuffer가 가지고 있는 메소드 들은 대부분 자기 자신, this를 반환한다. 때문에 자기 자신의 메소드를 호출하여 자기 자신의 값을 바꿔나갈 수 있다. 이러한 방법을 메소드체이닝 이라고 한다.
String str2 = new StringBuffer().append("hello").append(" ").append("world").toString();
System.out.println(str2);
위의 5줄이 이렇게 한줄로 된다.
StringBuffer클래스에는 편리한 메소드들이 많이 있다
연습문제
StringBufferExam의 randomName메소드는 임의의 이름과 성을 고른 다음, 이들을 조합해서 임의의 이름을 만들어냅니다. 22번째 줄에서 메소드체이닝을 이용해 sb에 firstName, 공백(" "), lastName을 붙이고, 마지막에 toString()을 붙여서 String type의 return을 하도록 만들고 제출해 보세요.
import java.util.Random;
public class StringBufferExam{
public static void main(String[]args) {}
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
}
}
정답
import java.util.Random;
public class StringBufferExam {
public static void main(String[] args) {
StringBufferExam sbe = new StringBufferExam();
System.out.println(sbe.randomName());
}
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에 이름(firstname) 공백(" ") 성(lastname)순으로 append 해보세요.
//단 메소드 체이닝을 이용해야 합니다.
return sb.append(firstName).append(" ").append(lastName).toString();
}
}
반응형