Frage zu String null-Wert

Status
Nicht offen für weitere Antworten.

Mane123

Bekanntes Mitglied
Hallo zusammen,

ich habe folgendes Listing:

Java:
class uberdeckt {
	
	//die Instanzvariable
	
	String zKette;
	
	void zKetteAendern (String zKette) {
		zKette = zKette + "geandert";
	}
	
	String getzkette () {
		return zKette;
	}
}

public class ueberdeckte_Instanzvariable {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		//eine Instanz von uberdeckt erzeugen
		
		uberdeckt test = new uberdeckt ();
		
		test.zKetteAendern("Test");
		System.out.println ("Der geänderte Wert ist" + test.getzkette() );
		
		
		if (test.getzkette().isEmpty())
			System.out.println ("Die Zeichenkette ist leer");
		else 
			System.out.println ("Die Zeichenkette ist nicht leer");
		
		
		
	}

}

Wenn ich es ausführe komme es zu einer Fehlermeldung. Ich möchte mir mit diesem Listing die Überdeckung von Instanzvariablen durch lokale Variablen genauer ansehen.
In der if-Verzweigung kommt es zu einer Fehlermeldung, weil ja die Instanzvariable zKette durch die lokale Variable überdeckt wird und dadurch die Instanzvariable "null" zurückliefert.

Meine Frage:

Ich weiß zwar, dass es durch einen "null" Wert zu einer "java.lang.NullPointerException
" kommt. Aber ich weiß nicht, warum dies so ist?

Warum liefert zum Beispiel "if (test.getzkette().isEmpty())" nicht true? Was ist denn genau der Wert "null"?

Viele Grüße
 
null kann man als nicht existent ansehen.
Objektvariablen, die zwar deklariert, nicht aber initialisiert worden sind, sind erst einmal null.
Daher ist null auch nicht mit isEmpty() abzufragen - die Variable, deren Methode aufgerufen werden soll, ist null, was in der NPE resultiert.

Testen auf null kannst du einfach mit dem Vergleichsoperator (und hier mit der Negation !):
Java:
if (!zKette == null) { /* fortfahren... */ } else {System.err.println("zKette ist null!");}
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben