Appearance
Primitive Datentypen vs. Referenztypen β
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:
intdoubleboolean
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 β
| Category | Type | Size | Typical Use |
|---|---|---|---|
| Integer | byte | 8 bit | Small integers |
| Integer | short | 16 bit | Smaller integers |
| Integer | int | 32 bit | Standard integers |
| Integer | long | 64 bit | Large integers |
| Decimal | float | 32 bit | Single-precision floating point |
| Decimal | double | 64 bit | Double-precision floating point (standard) |
| Character | char | 16 bit | A single character |
| Boolean | boolean | β | 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:
byteshortintlongfloatdoublecharboolean
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