StringTokenizer와 Scanner와 String.Split

조회수 2977회

자바의 스캐너 클래스를 배우면서 split하고 StringTokenizer이 세개의 차이점이 궁금해졌어요. 제가 알기로는 StringTokenizer랑 split은 오직 문자열에서만 동작하는데 그럼 왜 굳이 문자열을 분리할때 Scanner를 쓰죠?

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    문자열 분리에 사용되는 클래스

    1. StringTokenizer
    2. Scanner
    3. String
    4. Pattern,Matcher (정규식)

    각 특징들

    1. StringTokenizer 클래스: 생성자에 단 한 문자 구분자만 사용하여 토큰으로 분리한다.(여러개의 구분자는 사용가능하다)
    2. Scanner 클래스:useDelimiter() 메서드로 패턴 또는 문자열 구분자를 사용하여 분리한다.
    3. String 클래스: split() 메서드로 패턴 또는 문자열 구분자를 사용하여 분리하며, 빈문자열도 토큰으로 인식하며, 배열로 반환한다.
    4. 정규식 패턴: Pattern클래스로 단순한 패턴부터 복잡하고 다양한 패턴을 이용한 구분자로 분리가 가능하다.

    일단 정규식 기능은 String 클래스에 추가되어 왔습니다. 그리고 J2SE 5.0 JavaDocs에는 다음과 같이 언급하며, StringTokenizer의 추후 이용을 권장하지 않고 있습니다.

      StringTokenizer는 새로운 코드에서는 사용이 권장되지 않으나 
      호환성의 이유로 보유되고 있는 상속 클래스입니다. 이 기능을 사용하려는 사용자는 
      String의 분리 메소드 또는 java.util.regex 패키지 이용을 권장합니다. 
    

    위의 내용들은 문자열 분리에 사용되는 클래스들의 특징과 StringTokenizer는 이제 사용안하는것을 권장한다는 내용이고 똑같은 문자열 분리에 굳이 Scanner를 사용하는 이유라면 Scanner를 굳이 사용하게 되는 경우는 파일로부터 데이터를 읽어오는 도중에 문자열을 분리하고 싶을 경우 Scanner를 쓰면 유용하다는 것입니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)