non sono sicuro che NULL identifichi una stringa "".

Come ha detto LeleFT, non è inizializzato...(in java si da per scontato, ma si intede un "puntatore" non inizializato, è qui il problema)

codice:
String stringa;
//si avverte il compilatore che esisterà una variabile di nome stringa
//di tipo String, ma non esiste nessun spazio di memoria ancora 
//associato a "stringa",
//quindi è nullo.

stringa = "";
//stringa sarà un "puntatore"(impliciti in java) ad una zona di 
//memoria che conterrà il valore "", identificato col nome stringa
Quindi null praticamente dice
"per ora non esiste, ma ti avverto che esisterà"
e la memoria verrà allocata alla prima inizializzazione.

Un tipico errore causato dall'utilizzo errato di null è il NullPointerException, ovvero puntatore nullo, puntatore a memoria non allocata, non inizializzata appunto.

codice:
String str = null;
str.equals("");
in questo caso c'è un NullPointerException, dato che si vuole guardare se il valore di str è "", ma il valore è nullo, appunto, il valore non esiste ancora, bisogna appena allocare la memoria sufficiente a contenere un eventuale valore futuro .