Java String.valueOf (null) lanza NPE, pero Object a = null; String.valueOf (a) devuelve 'null' [duplicado]

Esta pregunta ya tiene una respuesta aquí:

¿Por qué String.valueOf (null) lanza una NullPointerException? 3 respuestas

¿Existe una explicación del tipo de diseño de lenguaje lógico para el siguiente comportamiento (Java 7 y sospecho que las ediciones anteriores también):

    Object  a = null;
    String as = String.valueOf(a);              // as is assigned "null"
    System.out.println(as+":"+as.length());     // prints: "null:4"
    System.out.println ( String.valueOf(null)); // NPE

Respuestas a la pregunta(3)

Su respuesta a la pregunta