Seit der Version 5 gibt es in Java
Autoboxing. Damit wird ein primitiver Datentyp in ein Wrapper Objekt umgewandelt und auch umgekehrt. Zum Beispiel von
int nach
Integer.
Aus dem Beispiel:
Wird vom Compiler in folgenden Code umgewandelt:
Der Operator >= ist nur für die primitiven Datentyp definiert, deswegen wird die
intValue() Methode aufgerufen. Anders sieht es aber beim == und != Operator aus, diese Operatoren sind für Objekte definiert deshalb wird kein Autoboxing ausgeführt. Bei kleinen Zahlen (Zwischen -128 und +127) ist das Ergebnis (meistens) das gleiche, wie bei beim Vergleichen der Zahlenwert, weil in dem Methode
valueOf() für kleine Zahlen immer das gleiche Objekt zurück gegeben wird. Bei großen Zahlen wird immer ein neues Objekt erzeugt.
Auch geht bei den Wrapper Klassen keine automatischen Typenumwandlung. Die folgende Methode kann nicht mit
foo(4711) aufgerufen werden, sondern nur mit
foo(4711l) oder mit
foo(Long.valueOf(4711).
public void foo
(Long zahl
) {}