# Nullpointer abfangen



## delphiking1980 (5. Jul 2011)

Hi,

ich habe da mal eine Frage :

nach Diversen Java Seminaren ist mir trotzdem nicht klar was besser ist :


```
if (objekt != null)
```

oder 


```
if (null != objekt)
```

hört sich erstmal gleich an aber es soll wohl sein das im ersten Beispiel trotzdem eine nullpointer kommen kann. Oder ??


----------



## ARadauer (5. Jul 2011)

Das ist egal. Verwechselst du das garade mit sowas:

if("Franz".equals(name))
vs
if(name.equals("Fanz"))
wobei bei 1. keine NPE kommen kann, beim 2. schon wenn name null ist


----------



## truesoul (5. Jul 2011)

Zu lange gebraucht 



> Das ist egal. Verwechselst du das garade mit sowas:
> 
> if("Franz".equals(name))
> vs
> ...



passt schon.


----------



## thewulf00 (5. Jul 2011)

Also eine Nullpointer kommt in keinem von beiden Fällen.

Der Unterschied ist nur, dass Leute, die aus C/C++ kommen, gern mal die zweite Variante bevorzugen, damit sie in jedem Fall den Fehler ausschließen, dass sie evtl. ne Zuweisung machen:
[c]if (obj = null)[/c] anstatt [c]if (ob == null)[/c]. Bei einer ungewollten Zuweisung würde die IDE höchstens eine Warnung anzeigen, wenn das so konfiguriert ist, aber bei der umgekehrten Variante gibts in jedem Fall einen Fehler und man muss sich die Zeile nochmal genau anschauen. Deshalb gewöhnen es sich manche an, in jedem Fall die Variable hinten (=rechts) zu schreiben.

Solange Du nicht auf eine Variable, die null enthält, per Methode oder Member zugreifst, kann nichts passieren.


----------



## delphiking1980 (5. Jul 2011)

Okay das mit der Zuweisung stimmt. Aber sonst muss ich euch recht geben es macht keinen Unterschied.


----------



## utnovetur (5. Jul 2011)

Hallo,

in C++ darf fast alles als Boolean interpretiert werden. Deshalb meckert dort der Compiler auch nicht, wenn man (versehentlich) schreibt:


```
if(object = null)
```

Deshalb haben sich C++-Programmierer angewöhnt zu schreiben:


```
if(null == object)
```

Vergisst man hier ein Gleichheitszeichen, meckert der Compiler.
In Java macht es wirklich keinen Unterschied.


----------



## thewulf00 (5. Jul 2011)

utnovetur hat gesagt.:


> Hallo,
> 
> in C++ darf fast alles als Boolean interpretiert werden. Deshalb meckert dort der Compiler auch nicht, wenn man (versehentlich) schreibt:
> 
> ...


Wow! Diese Erkenntnis ist neu in diesem Thread. Danke!


----------



## delphiking1980 (5. Jul 2011)

danke an allen die sich an der Diskusion beteilighaben und Licht ins Dunkel brachten.


----------

