Sio's Programming

JAVA (StringBuffer) 본문

Programming/JAVA

JAVA (StringBuffer)

SSio 2018. 5. 14. 15:53

아무 값도 가지고 있지 않은 StringBuffer객체를 생성



    StringBuffer sb = new StringBuffer();
    // 해당 스트링 버퍼에 "hello", 공백, "world"를 차례대로 추가

    sb.append("hello");
    sb.append(" ");
    sb.append("world");
    // StringBuffer에 추가된 값을 toString()메소드를 이용하여 반환

    String str = sb.toString();
  • 출력결과 : hello world

StringBuffer가 가지고 있는 메소드들은 대부분 자기 자신, this를 반환

    StringBuffer sb2 = new StringBuffer();
    StringBuffer sb3 = sb2.append("hello");
    if(sb2 == sb3){
        System.out.println("sb2 == sb3");
    }
  • 자기 자신의 메소드를 호출하여 자기 자신의 값을 바꿔나가는 것을 메소드체이닝 이라고 한다.
  • 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을 하도록 만들고 제출해 보세요.

정답:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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~3 사이의 임의의 숫자를 골라서
    int random1 = new Random().nextInt(3);
    //랜덤하게 이름을 뽑는다.
    String firstName = firstNames[random1];
 
    
    //0~3 사이의 임의의 숫자를 골라서
    int random2 = new Random().nextInt(3);
    //랜덤하게 성을 뽑는다.
    String lastName = lastNames[random2];
 
    //sb에 이름(fistName) 공백(" ") 성(lastname) 순으로 append해 보세요.
    //단 메소드 체이닝을 이용해야 합니다.
    String str2 = new StringBuffer().append(firstName).append(" ").append(lastName).toString();
    return str2;
  }
  public static void main(String[]args){}
}
cs



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

JAVA (java.lang 패키지 /오토박싱)  (0) 2018.05.14
배열(Array), ArrayList 차이점 및 활용  (0) 2018.05.09
스레드 (Runnable,Thread, synchronized)  (0) 2018.05.03
JAVA 입출력(I/O)  (0) 2018.05.03
Map 계열 컬렉션  (0) 2018.05.02