포스트

BufferedReader 와 StringTokenizer 그리고 StringBuilder

  • BufferedReader

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    BufferedReader br =  new BufferedReader(new InputStreamReader(System.in));
    // BufferedReader는 입력값을 한 줄씩 읽어온다(개행을 기준)
      
    // 입력값을 불러오기 위 br.readLine()을 사용하게 되는데, br.readLine()의 코드를 쓰는 순간 무조건 다음 입력값으로 넘어간다.
      
    // 예시
    // 입력값이
    // "2"
    // "두 번째 입력"
    // "세 번째 입력"
      
    System.out.println(br.readLine()); -> 2
    // 여기서 첫 번째 입력값인 2를 사용한다.
    // 그러므로 이어서
      
    int a =  Integer.parseInt(br.readLine());
    // 를 하게되면 "두 번째 입력" 이 들어오게 되므로 에러가 발생한다
    
  • StringTokenizer

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    StringTokenizer st = new StringTokenizer("입력값");
      
    // StringTokenizer(String str)
    // " "(공백) , \t(탭문자) , \n(개행문자)를 분리 문자로 사용하여 str을 분리한다.
      
    // StringTokenizer(String str , String delim)
    // 입력된 delim이 분리 문자로 사용하여 str을 분리한다.
      
    // StringTokenizer(String str , String delim , boolean returnDelims)
    // 입력된 delim이 분리 문자로 사용하여 str을 분리하고, 분리 문자열까지 분리해서 출력할지 여부를 설정한다. 기본은 false이기 때문에, 사용이 필요할 때 true를 붙여주면 된다.
      
    st.countTokens(); // 커서를 기준으로 남아있는 Token 갯수 반환
    st.hasMoreTokens(); // 반환할 수 있는 Token이 있는지 boolean 타입으로 반환
    st.nextToken(); // 현재 커서를 다음 구분자로 이동 후, 이전의 문자열을 반환
    
  • StringBuilder

    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
    27
    28
    29
    30
    31
    32
    33
    
    StringBuilder sb = new StringBuilder();
      
    // 데이터 추가
    sb.append("hello");
    sb.append("안녕");
    System.out.println("데이터 추가 : " + sb.toString());
    // => 데이터 추가 : hello안녕
      
    // 데이터 삽입
    sb.insert(5, "java"); // 5번째 자리에 데이터 삽입. index 0부터 시작
    System.out.println("데이터 삽입 : " + sb.toString());
    // => 데이터 삽입 : hellojava안녕
      
    // 데이터 삭제
    sb.delete(9, 11); // 9번부터 11번 전까지, 즉 9부터 10까지 삭제
    System.out.println("데이터 삭제 : " + sb.toString());
    // => 데이터 삭제 : hellojava
      
    // 데이터 교체
    sb.replace(5, 9, "자바");
    System.out.println("데이터 교체 : " + sb.toString());
    // => 데이터 교체 : hello자바
      
    // 데이터 역순(거꾸로 출력)
    sb.reverse();
    System.out.println("데이터 역순 : " + sb.toString());
    // => 데이터 역순 : 바자olleh
      
    // 초기화
    sb.setLength(0);
    // 또는 new StringBuilder();를 통해 새로운 객체를 생성
    // 또는 sb.delete() 메소드를 사용하는 방법
    // 하지만 sb.setLength(0); 방법이 가장 빠르다고 한다.