This is because . (dot) in the pattern matches any character.
Input string is "2.3", the dot in the pattern matches all three characters in the inupt string,
so the output should contain 4 empty strings.
But according to the javadoc:
http://download.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html#split%28java.lang.CharSequence%29
This method works as if by invoking the two-argument split method with the given input sequence and a limit argument of zero.
Trailing empty strings are therefore not included in the resulting array.
Therefore in this case the split method returns an empty array.
Change your pattern to "\\." and you will get desired results.