In the 'Head First
Java' book by Kathy Sierra and Bert Bates they describe variables that are references to objects (such as String objects, Person objects, Game objects, as opposed to primitive types) as remote controls that can be programmed to point at any object of the corresponding kind. A null reference is a remote control that exists, but hasn't been programmed.
With the variable that points to an empty String ( "" ) you have an actual String object living somewhere on the heap, and the remote control, and the remote has been programmed to access that String object. With the null reference, no String object on the heap, and no programming the remote.
Before I read about it in this way I was very, very confused.