StringTokenizer의 사용

2026. 7. 28. 14:10·Java/정리

오라클 공식문서

https://docs.oracle.com/en/java/javase/26/docs/api/java.base/java/util/StringTokenizer.html

StringTokenizer is a legacy class that is retained for compatibility reasons although its use is discouraged in new code. It is recommended that anyone seeking this functionality use the split method of String or the java.util.regex package instead.

StringTokenizer는 호환성(Compatibility)을 위해 남아있는 Legacy 클래스이며, 새로운 코드에서는 String.split() 또는 java.util.regex를 사용하는 것이 권장된다.


StringTokenizer가 만들어진 이유

Java가 처음 등장한 시기에는 지금처럼 문자열을 쉽게 분리하는 메서드가 없었다. 그래서 문자열을 자를려면 반복문을 돌려 공백을 찾은 후 그 부분을 분리 시켜야했다. 그래서 만들어진게 "문자열을 특정 구분자(Delimiter)를 기준으로 빠르게 잘라주는 클래스"인 StringTokenizer가 만들어졌다.


왜 StringTokenizer를 사용했을까?

그 당시에는

  • 정규표현식을 거 사용하지 않음
  • String.split() 없음
  • 문자열 처리 API 부족
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String temp = br.readLine();

		StringTokenizer st = new StringTokenizer(temp);
		while (st.hasMoreTokens()) {
			System.out.println(st.nextToken());
		}

	}

StringTokenizer 내부 작동 방식

A,B,C,D
 ^
A,B,C,D
   ^
nextToken()

StringTokenizer는 문자열을 복사해서 나누는 것이 아니라 현재 위치(index)를 하나 기억하면서 한칸씩 위치가 이동한다.


split() 의 방식

나중에 자바가 발전하면서 split() 이 추가되었는데 방식이 더 편리해졌다.

String[] arr = str.split(" ");
  • 배열로 변환 가능
  • 정규표현식 지원
  • foreach 사용가능
  • 코드가 직관적

알고리즘에서는 왜 아직도 StringTokenizer를 많이 사용할까?

BufferedReader + StringTokenizer

split()의 경우 입력이 많아지면 정규표현식 사용, 배열 생성, 메모리 추가 사용이 되지만 StringTokenizer를 사용하게 되면 필요한 문자열만 한칸씩 옮기며 찾아내기 때문에 메모리 사용이 적고 속도도 빠른 편이다.


StringTokenizer의 단점

  • Legacy 클래스
    예전 API 기 때문에 새로운 프로젝트에서는 권장하지 않음
  • 정규표현식 지원 없음

참고

https://docs.oracle.com/en/java/javase/26/docs/api/java.base/java/util/StringTokenizer.html

 

StringTokenizer (Java SE 26 & JDK 26)

 

docs.oracle.com

https://inpa.tistory.com/entry/JAVA-%E2%98%95-Split-StringTokenizer-%EB%AC%B8%EC%9E%90%EC%97%B4-%EC%9E%90%EB%A5%B4%EA%B8%B0-%EB%B9%84%EA%B5%90%ED%95%98%EA%B8%B0

 

☕ 자바 split / StringTokenizer - 문자열 자르기 비교

자바 문자열 자르기 자바에서 문자열을 자르는데 사용하는 대표적인 클래스가 String 클래스의 split 메서드와 StringTokenizer 클래스가 있다. 이번 시간에는 이 둘의 사용 문법을 알아보고, 둘이 어떠

inpa.tistory.com

 

'Java > 정리' 카테고리의 다른 글

자바의 동적 바인딩(Dynamic Binding)과 정적 바인딩(Static Binding)  (0) 2026.07.29
Java 문자열 입력 처리 - Scanner와 BufferedReader  (0) 2026.07.28
자바에서 int[] ↔ List<Integer> 변환 (for문은 이제 그만...)  (0) 2025.12.08
오름차순 정렬과 내림차순 정렬에 대해 알아보자  (0) 2025.12.05
ArrayList가 처음이라면 꼭 알아야 할 핵심 기능  (0) 2025.12.04
'Java/정리' 카테고리의 다른 글
  • 자바의 동적 바인딩(Dynamic Binding)과 정적 바인딩(Static Binding)
  • Java 문자열 입력 처리 - Scanner와 BufferedReader
  • 자바에서 int[] ↔ List<Integer> 변환 (for문은 이제 그만...)
  • 오름차순 정렬과 내림차순 정렬에 대해 알아보자
나는지토
나는지토
  • 나는지토
    안녕은헬로입니다.
    나는지토
  • 전체
    오늘
    어제
    • 분류 전체보기 (32)
      • Java (8)
        • 정리 (7)
        • 코테 (1)
      • NestJS (19)
        • 개발 (9)
        • 개념과 구조 정리 (10)
      • Python (1)
        • 코테 (1)
      • Backend Design (1)
      • PostgreSQL (2)
      • Docker (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    서비스
    컨트롤러
    자료구조
    JWT
    코딩테스트
    Java
    ArrayList
    BullMQ
    채팅
    인증 가드
    nestjs/jwt
    커서기반 조회
    토큰 검사
    Redis
    db 연결 오류
    조회 방식
    nestjs
    역할 검사
    Collections
    PostgreSQL
  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
나는지토
StringTokenizer의 사용
상단으로

티스토리툴바