Primitivtypen und Wrapperklassen (Java)

Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springen

Primitivtypen

Die Typen byte, short, int, long, double, float, boolean und char sind als einzige Ausnahmen in Java nicht objektorientiert, sondern sogenannte primitive Datentypen. Primitivdatentypen werden "Call by Value" übergeben, d.h.:

public class CallByValue
{
  public static void main (String[] args)
  {
    int i = 5;
    inc (i);
    System.out.println (i);  //Ausgabe: 5
  }
  private static void inc (int a)
  {
    a++; //Die alte Variable wird nicht verändert
  }
}

Wrapperklassen

Es gibt aber auch die Klassen Byte, Short, Integer, Long, Double, Float, Character und Boolean im Paket java.lang. Sie haben immer eine Primitivvariable des jeweiligen Typs als Membervariable. Über diese Klassen können auch Strings in andere Datentypen umgewandelt werden. Man kann sich die Klasse vereinfacht so vorstellen:

public class Integer
{
  private int i;
  public Integer (int i)
  {
    this.i = i;
  }
  public int intValue()
  {
    return i;
  }
}

Da diese Klassen Objekte sind, wird das Objekt übergeben, es wird nicht kopiert. Leider haben sie keine Möglichkeit, den int-Wert zu verändern, deshalb benutze ich zur Verdeutlichung eine eigene Klasse:

public class CallByReference //Ist eigentlich kein Call by Reference, weil die Referenz by Value übergeben wird
{
  public static void main (String[] args)
  {
    int i = 5;
    Integer integ = new Integer (i);
    inc (integ);
    i = integ.intValue();
    System.out.println (i); //Ausgabe: 6
  }
  public static void inc (Integer i)
  {
    i.setValue (i.intValue() + 1); //Das Objekt wird verändert
  }
}
class Integer //Die Hilfsklasse
{
  private int i;
  public Integer (int i)
  {
    this.i = i;
  }
  public int intValue()
  {
    return i;
  }
  public void setValue (int i)
  {
    this.i = i;
  }
}

Übrigens: die Klassen haben auch immer eine native statische innere Klasse mit dem Namen TYPE, der in der Reflections-API den Primitivtyp repräsentiert.


Fragen

Das Thema wurde nicht ausreichend behandelt? Du hast Fragen dazu und brauchst weitere Informationen? Lass Dir von uns helfen!

Wir helfen dir gerne!


Dir hat dieser Artikel gefallen? Oder Du hast Fehler entdeckt und möchtest zur Berichtigung beitragen? Prima! Schreibe einen Kommentar!

Du musst angemeldet sein, um einen Kommentar abzugeben.