Objektorientierte Sprachen sind ein bisschen anders, als Imperative Sprachen (z.B. C, Pascal, ...)
Bei Objektorientieren Sprachen arbeitest du mit Objekten. In deinem Fall ist String eine Referenz auf ein Objekt. Quasi ein Zeiger. Ein Zeiger auf ein Objekt, indem die Daten gespeichert sind und Methoden bereitstellt. Ein String ist ja kein nativer Datentyp (wie z.B. int, boolean, double, float), sondern ein zusammengesetzter Datentyp aus einzelnen Charactern. Also ein String ist eine Liste aus Zeichen.
Mit String == "" vergleichst du, ob die Referenz ein leerer String ist, aber du möchtest ja wissen, ob die Daten, die gespeichert worden sind, einen leeren String entsprechen. Also muss eine Methode vorhanden sein, die dir Informationen zurückgibt, mit denen du arbeiten kannst. Entweder benutzt String.length() == 0 und vergleichst damit, ob die Länge gleich 0 ist, oder du benutzt String.equals("") und vergleichst den leeren String mit deinem String.
edit
bah, zu langsam :/