# testen ob int gleich null



## Guest (3. Mrz 2008)

Hallo,

ich will testen ob einem int schon eine zahl zugewiesen wurde:

Habs so gemacht:


```
int i;

//Viel Code



if (i==null)
//weiter gehts
```

Warum geht das nicht?


----------



## The_S (3. Mrz 2008)

weil ein primitiver Datentyp wie int nie null sein kann.


----------



## Guest (3. Mrz 2008)

aber wenn ich ihn deklariere was ist er dann?


----------



## The_S (3. Mrz 2008)

deklariert ist er doch. Er ist nur nicht initialisiert. Und wenn du ihn nicht initialisierst, dann ist er nicht initialisiert und du solltest eine "might not been initialized"-Exeption (oder so ähnlich) bekommen.


----------



## ARadauer (3. Mrz 2008)

ich denk er ist 0 oder?


```
public class Test{
	private static int i;
	public static void main(String[] args) {
		System.out.println(i);
	}
}
```
ergibt 0


----------



## SlaterB (3. Mrz 2008)

bei Exemparvariablen/ Klassenattributen ja, bei lokalen Variablen nein,
warum auch immer


----------



## tfa (3. Mrz 2008)

SlaterB hat gesagt.:
			
		

> bei Exemparvariablen/ Klassenattributen ja, bei lokalen Variablen nein,
> warum auch immer


Bei lokalen Variablen kann es der Compiler prüfen (das ist ein Compiler-Fehler, keine Exception).


----------



## SnooP (3. Mrz 2008)

Wenn du das ganze wirklich brauchst und nicht evtl. mit einer parallelen boolean-Variable besser fährst, kannst du Integer statt int benutzen... seit Java5 und autoboxing kann man dann auch prima primitive Typen den "großen" Typen zuweisen und umgekehrt...


----------



## Leroy42 (3. Mrz 2008)

Hobbit_Im_Blutrausch hat gesagt.:
			
		

> Und wenn du ihn nicht initialisierst, dann ist er nicht initialisiert und du solltest eine "might not been initialized"-Exeption (oder so ähnlich) bekommen.



 :shock: Hast du dir jetzt schon deine eigene Java-Version geschrieben?  :shock:

(Da läßt man den mal ein paar Monate herumwerkeln
und *das* kommt dabei raus...  ???:L (  ))


----------



## The_S (4. Mrz 2008)

Na klar, Bei mir gibts schon Version 10! Die kann alles! Die kann nativen Code ausführen, Anhand des ersten Tastendrucks erkennen, was du eigentlich machen willst, anhand deiner Gedanken das komplette Programm programmieren und badet abends sogar deine Katze!


----------



## Janus (4. Mrz 2008)

SnooP hat gesagt.:
			
		

> Wenn du das ganze wirklich brauchst und nicht evtl. mit einer parallelen boolean-Variable besser fährst, kannst du Integer statt int benutzen... seit Java5 und autoboxing kann man dann auch prima primitive Typen den "großen" Typen zuweisen und umgekehrt...



und dank autoboxing kann man sich auch ganz einfach tolle nullpointer einbauen


----------



## ms (4. Mrz 2008)

Janus hat gesagt.:
			
		

> und dank autoboxing kann man sich auch ganz einfach tolle nullpointer einbauen


Wieso ist durch Autoboxing die Gefahr einer NullPointerException größer???
Kann ich nicht nachvollziehen.

ms


----------



## SlaterB (4. Mrz 2008)

```
public class Test
{
    public static void main(String[] args)
        throws Exception
    {

        Integer a = null;
        int b = 0;


        if (b == 0 || a == 0)
        {
            System.out.println("x");
        }
        
        // sieht harmlos aus, aber NullPointerException,
        // mit int nicht möglich 
        // -> Gefahr von 0 auf irgendwas gestiegen, also größer ;)
        if (a == 0 || b == 0)
        {
            
            System.out.println("y");
        }
    }
}
```


----------



## ms (4. Mrz 2008)

```
Integer a = null;
    if (a == 0) {
        ...
```
Vor Autoboxing musste man ein Objekt auf Null prüfen und jetzt mit Autoboxing muss man es genauso, für mich also kein Unterschied.

ms


----------



## SlaterB (4. Mrz 2008)

Autoboxing heißt, dass man mit ints arbeitet und praktisch gar nicht weiß/ sieht/ berücksichtigt, dass dahinter Integer stehen,
daher ist die Möglichkeit von null völlig neu im Vergleich zum Arbeiten mit ints,

mit Integer braucht man das nicht vergleichen, das sind Objekte, was ganz anderes, da kann man gar nicht == verwenden bzw. macht selten Sinn


----------



## ms (4. Mrz 2008)

SlaterB hat gesagt.:
			
		

> Autoboxing heißt, dass man mit ints arbeitet und praktisch gar nicht weiß/ sieht/ berücksichtigt, dass dahinter Integer stehen


Halte ich für falsch.
Autoboxing heißt, dass man sich die Hin- und Herkonvertierung zwischen primitiven Datentyp und Wrapperklasse erspart und dies implizit passiert.

Und etwas praktisch nicht wissen, sehen und berücksichtigen war schon immer ein KO-Kriterium beim programmieren.
Sonst gäbe es wohl dieses Forum nicht.  :lol: 

ms


----------

