# Auf Null abfragen



## Guest (21. Nov 2006)

Hi,

wie kann man überprüfen ob eine int Variable null ist?

ich bedanke mich für die antwort.

Gruß


----------



## dieta (21. Nov 2006)

So:

```
if(Variable == null)
{
    //Tu was
}
else
{
    //Tu was anderes
}
```


----------



## Guest (21. Nov 2006)

Bei mir sagt er das es nicht geht.

Ich habe es so gemacht.


```
int test = 0;

if(test == null){
}else{}
```

Bekomme diese Meldung: incomparable types: int and nulltype

Wieso geht es denn nicht?


----------



## Micha_S (21. Nov 2006)

wenn du prüfen möchtest ob die Variable mit 0 also der Zahl belegt ist musst du mit:

```
if(test==0) {}
```
fragen


----------



## Wildcard (21. Nov 2006)

Ein primitiver Datentyp kann nicht 'null' sein


----------



## Guest (21. Nov 2006)

ich möchte prüfen ob die Variable keinen Wert hat, bzw. noch nicht intialisiert wurde


----------



## Wildcard (21. Nov 2006)

Ein primitiver Datentyp hat *immer* einen Wert


----------



## Guest (21. Nov 2006)

hm..okay, dann wirds wohl nicht gehen


----------



## HLX (22. Nov 2006)

Anonymous hat gesagt.:
			
		

> hm..okay, dann wirds wohl nicht gehen



Dafür gibt es die Klasse java.lang.Integer:
java.sun.com/j2se/1.4.2/docs/api/java/lang/Integer.html


----------



## MookiE (22. Nov 2006)

Anonymous hat gesagt.:
			
		

> Bei mir sagt er das es nicht geht.
> 
> Ich habe es so gemacht.
> 
> ...



du initialisiert doch mit 
	
	
	
	





```
int test = 0;
```
 die variable schon... warum willste des überhaupt dann noch testen. (compiler testet des schon ob die initialisiert ist ;-) )


----------



## L-ectron-X (22. Nov 2006)

Eine Variable vom Typ int wird vom Interpreter immer mit 0 initialisiert, wenn kein anderer Wert vorgegeben wurde.
Insofern hat eine int-Variable, wenn ihr nie ein Wert zugewiesen wurde, den Wert 0.

_null_ ist eine Objektreferenz, die auf _nichts_ zeigt, also noch nicht initialisiert wurde und somit noch nicht auf ein konkretes Objekt zeigt. Im Gegensatz zu primitiven Datentypen, haben Referenzen, wie primitive Datentypen auch, zwar einen Typ, zeigen aber nach einer Deklaration noch auf kein Objekt. In diesem Fall sind sie _null_. Erst wenn sie mit einem Wert initialisiert werden, bzw. ihnen ein Wert zugewiesen wird, zeigen sie auf ein Objekt im VM internen Speicherbereich (Heap).


----------



## thE_29 (22. Nov 2006)

Sehr schön erklärt 

Und dadurch hat Boolean (nicht boolean) eigentlich 3 Zustände 

Boolen.YES, Boolean.NO und null  ^^ (ja, nein, weiß nicht )


----------



## armitage (23. Nov 2006)

Nicht ganz. Eine Instanz der Klasse Boolean hat (logisch gesehen) nur zwei Wertemöglichkeiten: true und false.

Boolean b=null; heißt nur, dass die Referenz auf kein Objekt zeigt. Der Wert null hat also mit dem Boolean-Objekt nichts zu tun.


----------



## thE_29 (23. Nov 2006)

Jo, das es mit dem Wert Boolean nix zum tun hat ist klar, aber man kann es so nutzen 


Was ist wenn du ne Methode hast, die entweder true oder false zurükgeben soll!

Wenn aber ein Fehler auftritt, gibst null zurück und kannst das so noch zusätzlich abhandeln


----------



## SlaterB (23. Nov 2006)

L-ectron-X hat gesagt.:
			
		

> Eine Variable vom Typ int wird vom Interpreter immer mit 0 initialisiert, wenn kein anderer Wert vorgegeben wurde.
> Insofern hat eine int-Variable, wenn ihr nie ein Wert zugewiesen wurde, den Wert 0.


??


```
public static void main(String args[]) throws Exception {
		int i;
		i++;
	}
```

-> Error	:		The local variable i may not have been initialized


----------



## Gast (23. Nov 2006)

primitive objektvariablen werden automatisch initialisiert

lokale variabeln nicht


----------



## Guest (23. Nov 2006)

thE_29 hat gesagt.:
			
		

> Jo, das es mit dem Wert Boolean nix zum tun hat ist klar, aber man kann es so nutzen
> 
> 
> Was ist wenn du ne Methode hast, die entweder true oder false zurükgeben soll!
> ...




Ist ok, was ich sagen wollte ist, dass wenn eine Methode null zurückgibt, heißt es nicht, dass sie das Boolean-Objekt mit dem Wert null zurückgibt, sondern dass sie gar nicht auf ein Boolean-Objekt zeigt. Kleiner, aber feiner Unterschied.
 :wink: 

Gruß


----------

