Skip to content

Primitive Datentypen vs. Referenztypen ​

🟒 EinstiegBearbeitet

Notizen ​

Java Datentypen sind ein Mechanismus, der bestimmt, welche Art von Wert eine Variable speichern kann. Java legt großen Wert auf Typsicherheit. Aber was ist Typsicherheit eigentlich?

Typsicherheit ist ein Design, das ungΓΌltige Typoperationen zur Kompilierzeit verhindert. Daher muss jede Variable einen deklarierten Typ haben.

java
int number = 10;
double price = 19.8;
String name = "Java";

Durch explizite Angabe von Typen erhalten Sie Vorteile wie:

  • Verhindert ungΓΌltige Zuweisungen
  • Optimiert den Speicherverbrauch
  • Erfasst Fehler zur Kompilierzeit

Es gibt zwei Kategorien von Java Datentypen

  • Primitive Typen
  • Referenztypen

Was sind Primitive Typen? ​

Das sind Typen die den tatsΓ€chlichen Wert direkit speichern:

  • int
  • double
  • boolean

Sie sind schnell, Speichereffizient und kΓΆnnen null nicht enthalten

Was sind Referenztypen? ​

Typen die den Wert selbst nicht speichern, sondern eine "Referenz" darauf, wo der Wert gespeichert ist.

java
String text = "Hello World";

String ist ein Klassentyp (ein Referenztyp), zu erkennen an der Großschreibung. Sie haben folgende Eigenschaften:

  • Basierend auf Klassen erstellt
  • KΓΆnnen null zugewiesen werden
  • Haben Methoden (Verhalten)

HΓ€ufige Stolpersteine ​

  • MissverstΓ€ndnis von String als primitiven Typ
  • Annehmen, dass das Kopieren eines Referenztyps den Wert selbst kopiert
  • Nicht verstehen, wie null funktioniert

Primitive Typen ​

CategoryTypeSizeTypical Use
Integerbyte8 bitSmall integers
Integershort16 bitSmaller integers
Integerint32 bitStandard integers
Integerlong64 bitLarge integers
Decimalfloat32 bitSingle-precision floating point
Decimaldouble64 bitDouble-precision floating point (standard)
Characterchar16 bitA single character
Booleanboolean–true / false

Wichtiger Hinweis bei der Verwendung von long ​

long value = 10000000000L; // L is required

Ohne das L wird der Literal als int behandelt und kann einen Kompilierungsfehler aufgrund von Out-of-Range verursachen.

Gleitkommatypen (float / double) ​

java
double price = 19.99;
float rate = 0.5f;

Grundregeln ​

  • In der Regel double verwenden
  • float erfordert ein nachgestelltes f

float value = 3.14f;

Unterschiedliche Genauigkeiten ​

  • float: etwa 7 Stellen Genauigkeit
  • double: etwa 15 Stellen Genauigkeit

Wichtiger Hinweis (Rundungs-/Genauigkeitsprobleme) ​

System.out.println(0.1 + 0.2);

Das Ergebnis ist mΓΆglicherweise nicht exakt 0,3. Dies liegt an der binΓ€ren Gleitkommadarstellung.

Geldberechnungen ​

FΓΌr Geldberechnungen wird double im Allgemeinen nicht empfohlen. Die Verwendung von BigDecimal ist sicherer.

Zeichentyp (char) ​

char letter = 'A';

  • Verwendet einfache AnfΓΌhrungszeichen
  • Verwaltet mit Unicode (ein Zeichenkodierungsstandard)
  • Kann nur ein einzelnes Zeichen speichern

char kanji = 'ζ—₯';

HΓ€ufige Fehler ​

  • Doppelte AnfΓΌhrungszeichen verwenden (das ist String)
  • Versuch, mehrere Zeichen zu speichern

Interview-Fragen ​

1. Was ist der Unterschied zwischen primitiven Datentypen und Referenztypen in Java? ​

Antwort:
Primitive Datentypen speichern den tatsΓ€chlichen Wert direkt in der Variable (z. B. int, double, boolean).
Referenztypen speichern dagegen eine Referenz (Adresse) zu einem Objekt im Speicher, z. B. String oder andere Klassen.


2. Wie viele primitive Datentypen gibt es in Java? ​

Antwort:
Java hat 8 primitive Datentypen:

  • byte
  • short
  • int
  • long
  • float
  • double
  • char
  • boolean

3. Warum ist Java typsicher? ​

Antwort:
Java verlangt, dass jede Variable einen festen Typ hat.
Der Compiler prΓΌft, ob nur gΓΌltige Operationen mit kompatiblen Typen durchgefΓΌhrt werden.
Fehler werden dadurch bereits zur Kompilierzeit erkannt.


4. Kann ein primitiver Datentyp null sein? ​

Antwort:
Nein. Primitive Datentypen speichern immer einen konkreten Wert und kΓΆnnen daher kein null enthalten.
Nur Referenztypen kΓΆnnen null sein.


5. Ist String ein primitiver Datentyp? ​

Antwort:
Nein. String ist ein Referenztyp, weil er eine Klasse (java.lang.String) ist.
Die Variable speichert daher eine Referenz auf ein Objekt.


6. Was passiert, wenn man eine Refernenzvariable kopiert? ​

java
String a = "Hello";
String b = a;

Antwort:

Es wird nur die Referenz kopiert, nicht das Objekt selbst. Beide Variablen zeigen auf dasselbe Objekt im Speicher.

7. Welche Vorteile haben primitive Datentypen? ​

Antwort:

  • schneller Zugriff
  • geringerer Speicherverbrauch
  • kein Objekt-Overhead