나도 처음엔 같은줄 알고, 무분별하게 사용했었다. 하지만, 그걸 깨준 문제가 있어서 공유하려고 한다.
위 문제를 풀어보면, Split으로 풀어보면 무조건 틀린다.
무슨 입출력으로 장난을 치냐 생각했는데, 새로운 사실을 알았으니 봐준다!
StringTokenizer은 말그대로, 구분자의 개수를 상관하지 않고 Token만 뽑아낼 수 있다.
Split은 구분자의 개수를 상관한다.
import java.util.*;
import java.lang.*;
import java.io.*;
class Main
{
public static void main (String[] args) throws java.lang.Exception
{
String test = "333 333 3333";
String[] sArr = test.split(" ");
StringTokenizer stk = new StringTokenizer(test, " ");
// split
for(int i = 0; i < sArr.length; i++){
System.out.println(i + " " + sArr[i]);
}
System.out.println();
// StringTokenizer
int stkIdx = 0;
while(stk.hasMoreTokens()){
System.out.println(stkIdx + " " + stk.nextToken());
stkIdx++;
}
}
}
출력 결과를 분석하기 위해, 클래스의 정확한 동작 원리까지 파악하고 싶진 않다.
중요한 것은 공백을 없애기 위해서는 StringTokenizer를 사용해야 한다는 사실이다.
0 333
1
2 333
3
4
5
6
7
8 3333
0 333
1 333
2 3333