StringTokenizer совершенно не подходит для задачи разбивки строки на отдельные символы. С String#split()
вы можете сделать это легко, используя регулярное выражение, которое ничего не соответствует, например ::10000
String[] theChars = str.split("|");
Но StringTokenizer не использует регулярные выражения, и вы не можете указать строку-разделитель, которая будет соответствовать ничему между символами. Там есть один милый маленький хак, который вы можете использовать для достижения того же: используйте саму строку в качестве строки-разделителя (делая каждый символ в ней разделителем) и попросите ее вернуть разделители:
StringTokenizer st = new StringTokenizer(str, str, true);
Однако я упоминаю эти варианты только с целью их отклонения. Оба метода разбивают исходную строку на односимвольные строки вместо символьных примитивов, и оба требуют больших накладных расходов в форме создания объекта и манипуляции со строками. Сравните это с вызовом charAt () в цикле for, который практически не требует дополнительных затрат.