¿Cómo funciona exactamente el método String.split () en Java cuando se proporciona regex?

Me estoy preparando para el examen OCPJP y me encontré con el siguiente ejemplo:

class Test {
   public static void main(String args[]) {
      String test = "I am preparing for OCPJP";
      String[] tokens = test.split("\\S");
      System.out.println(tokens.length);
   }
}

Este código imprime 16. Esperaba algo así como no_of_characters + 1. ¿Puede alguien explicarme, qué hace realmente el método split () en este caso? Simplemente no entiendo...

Respuestas a la pregunta(1)

Su respuesta a la pregunta