Page:
Primitive Datentypen
Pages
Überladen und Überschreiben von Methoden
99 Lernnotizen
Aufpassen!
Calendar API
Enums
Exam Watch
Garbage Collection
Initialisieurngsreihenfolge
Interfaces
Label, break, continue
Lambda Ausdrücke (Predicate)
Operator Rangfolge
Primitive Datentypen
Switch Anweisung
ZZZ: 00 Allgemeines
ZZZ: 01 Kapitel 1
ZZZ: 02 Kapitel 2
Clone
17
Primitive Datentypen
Sebastian Eidecker edited this page 2019-11-18 13:16:28 +00:00
4 verschiedene Typen
- Ganzzahlen: ``byte``, ``short``, ``int``, ``long`` (Standard ``int``, Default ``0``)
- Gleitkommazahlen: ``float``, ``double`` (Standard ``double``, Default ``0.0``)
- Boolsch: ``boolean`` (Default ``false``)
- Character: ``char`` (Default ``'\u0000'``).
Definition per Literal
- Unterstriche können zur Gliederung verwendet werden
- Auch bei oktaler, hexadezimaler, binärer Deklaration
- An beliebiger Stelle, auch mehrere nacheinander ...
- ... außer am Anfang oder Ende und
- ... vor und nach Sonderzeichen (Dezimalpunkt X, B)
Ganzzahlen
- Suffix
L,lzur Deklaration vonlong-Typen (auch in oktal/binär/hex-Schreibweise) - Dezimal:
int i = 323 - Binär: Präfix
0B, 0b:int i = 0b10101010100;. Nur 1 und 0 erlaubt. - Oktal: Präfix
0, 0-7 erlaubt. Achtung: 011 ist eine Oktalzahl, führende Null wird nicht ignoriert. - Hexadezimal: Präfix
0x, 0X, 0-F/f erlaubt, auch groß/klein gemischt. - Wenn Bereich passend können auch char-Literale zugewiesen werden.
Gleitkommazahlen
- Suffix
f, Ffür float. (d, Dfür Double möglich, aber sinnlos) - Da
doubleStandard Compilerfehler, wenn einem float ein Literal ohne Suffix zugewiesen wird. - Ganzzahlen gehen aber bei float (
float f = 1L;)
Character
- Einzelner Buchstabe in einzelnen Hochkommata
char c = 'a';oder Unicode-Codechar c = '\u004E' - Auch Zahl im Bereich 0-65535 möglich
Boolean
falseundtrue, sonst nichts!
Implizite Umwandlungen (Casts)
- Einfache Literale (int) werden automatisch gecastet (auch auf Gleitkommazahlen)
- Kleinere Typen werden bei Zuweisung explizit in größere gecastet
- Zuweisung zu
charnicht implizit möglich, da kein negativer Wertebereich - Ganzzahlen können implizit zu Gleitkommazahlen gecastet werden:
float f = 1L; - Besonderheit Wrapper:
FloatundDoublekönnen keine Ganzzahl-Literale zugewiesen werden! Suffix oder Cast benötigt.
Explizite Casts
- Immer benötigt, wenn nicht sichergestellt ist, dass Zahl passt
+, -: Erzeugt bei Ganzzahlenint, expliziter Cast bei kleineren Typen notwendig. Kein Problem beifloat+=, -=: Kein Problem, Typ bleibt- Zu große Literale können nur mit Cast zugewiesen werden. Dann aber außerhalb Bereich möglich, zur Not wird abgeschnitten.
- Auch bei Überlauf dürfen Literale nicht größer als möglich definiert werden. Rechenergebnisse können aber größer sein.
- Explizit können auch Gleitkommazahlen zu Ganzzahlen zugewiesen werden. Dann werden Nachkommastellen abgeschnitten
Equals mit Wrappern
equals()kann nicht direkt auf Literalen oder primitiven Variablen aufgerufen werden.- Kann aber als Parameter in die equals-methode gegeben werden.
- Wird in den Wrapper-Typ des Primitiven gewandelt
- Wrapper prüfen auf exakten Typen, nicht nur auf semantische Gleichheit: new Long(1).equals(1) == false
Diverses
- Unterstriche, hex- oktal-, binär-Literale können nicht in den String-Konstruktoren der Wrapper verwendet werden.
==für inhaltlichen Vergleich- Werden byValue übergeben
- Standard für Ganzzahl:
int - Standard für Gleitkommazahl:
double - Cast von double/float nach int/long: Schneidet Nachkommastellen ab
- Vergleich von Ganz- und Gleitkommazahl mit == möglich, aber gefährlich