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
.