Java-Grunddatentypen
Eine Variable wird verwendet, um Speicher zum Speichern von Werten zuzuweisen. Das heißt, wenn du eine Variable erstellst, musst du Speicherplatz im Speicher zuweisen.
Das Speicherverwaltungssystem weist der Variablen anhand ihres Typs Speicherplatz zu, und der zugewiesene Speicherplatz kann nur zum Speichern von Daten dieses Typs verwendet werden.

Daher kannst du durch Definieren von Variablen unterschiedlicher Typen Ganzzahlen, Dezimalzahlen oder Zeichen im Speicher speichern.
Javas zwei Hauptdatentypen:
- Eingebaute Datentypen
- Referenzdatentypen
Eingebaute Datentypen
Die Sprache Java bietet acht primitive Typen. Sechs numerische Typen (vier Ganzzahltypen, zwei Gleitkommatypen), einen Zeichentyp und einen booleschen Typ.
byte:
- Der byte-Datentyp ist eine 8-Bit-Ganzzahl mit Vorzeichen, dargestellt im Zweierkomplement;
- Der Minimalwert ist-128(-2^7);
- Der Maximalwert ist127(2^7-1);
- Der Standardwert ist0;
- Der byte-Typ wird in großen Arrays verwendet, um Speicherplatz zu sparen, hauptsächlich zum Ersetzen von Ganzzahlen, da eine byte-Variable nur ein Viertel des Speicherplatzes eines int-Typs belegt;
- Beispiel: byte a = 100, byte b = -50.
short:
- Der short-Datentyp ist eine 16-Bit-Ganzzahl mit Vorzeichen, dargestellt im Zweierkomplement;
- Der Minimalwert ist-32768(-2^15);
- Der Maximalwert ist32767(2^15 - 1);
- Der short-Datentyp kann außerdem wie byte Speicherplatz sparen. Eine short-Variable belegt die Hälfte des Speicherplatzes, den eine int-Variable belegt;
- Der Standardwert ist0;
- Beispiel: short s = 1000, short r = -20000.
int:
- Der int-Datentyp ist eine 32-Bit-Ganzzahl mit Vorzeichen, dargestellt im Zweierkomplement;
- Der Minimalwert ist-2,147,483,648(-2^31);
- Der Maximalwert ist2,147,483,647(2^31 - 1);
- Im Allgemeinen haben Ganzzahlvariablen standardmäßig den Typ int;
- Der Standardwert ist0 ;
- Beispiel: int a = 100000, int b = -200000.
long:
- Der long-Datentyp ist eine 64-Bit-Ganzzahl mit Vorzeichen, dargestellt im Zweierkomplement;
- Der Minimalwert ist-9,223,372,036,854,775,808(-2^63);
- Der Maximalwert ist9,223,372,036,854,775,807(2^63 -1);
- Dieser Typ wird hauptsächlich in Systemen verwendet, die relativ große Ganzzahlen erfordern;
- Der Standardwert ist0L;
- Beispiel:long a = 100000L,long b = -200000L。
"L" ist theoretisch unabhängig von der Groß-/Kleinschreibung, aber wenn es als "l" geschrieben wird, ist es leicht mit der Zahl "1" zu verwechseln und schwer zu unterscheiden. Daher ist es am besten, Großbuchstaben zu verwenden.
float:
- Der Datentyp float ist eine 32-Bit-Gleitkommazahl mit einfacher Genauigkeit, die dem IEEE 754-Standard entspricht;
- float kann Speicherplatz sparen, wenn große Gleitkomma-Arrays gespeichert werden;
- Der Standardwert ist0.0f;
- Gleitkommazahlen können nicht verwendet werden, um präzise Werte wie Währungen darzustellen;
- Beispiel: float f1 = 234.5f.
double:
- Der Datentyp double ist eine 64-Bit-Gleitkommazahl mit doppelter Genauigkeit, die dem IEEE 754-Standard entspricht;
- Der Standardtyp für Gleitkommazahlen ist double;
- Der Typ double kann ebenfalls keine präzisen Werte wie Währungen darstellen;
- Der Standardwert ist0.0d;
-
Beispiel:
double d1 = 7D ; double d2 = 7.; double d3 = 8.0; double d4 = 8.D; double d5 = 12.9867;
7 ist ein int-Literal, während 7D, 7. und 8.0 double-Literale sind.
boolean:
- Der boolean-Datentyp repräsentiert ein Bit an Information;
- Er hat nur zwei Werte: true und false;
- Dieser Typ wird nur als Flag verwendet, um true/false-Bedingungen aufzuzeichnen;
- Der Standardwert istfalse;
- Beispiel: boolean one = true.
char:
- Der char-Typ ist ein einzelnes 16-Bit-Unicode-Zeichen;
- Der Mindestwert ist\u0000(Dezimalwert ist 0);
- Der Höchstwert ist\uffff(i.e., 65535);
- Der char-Datentyp kann jedes Zeichen speichern;
- Beispiel: char letter = 'A';.
Beispiel
Für die Wertebereiche numerischer primitiver Typen müssen wir sie nicht zwangsweise auswendig lernen, da ihre Werte bereits als Konstanten in den entsprechenden Wrapper-Klassen definiert sind. Siehe das Beispiel unten:
Beispiel
Beispiel ausführen »
Das Kompilieren des obigen Codes erzeugt die folgende Ausgabe:
基本类型:byte 二进制位数:8 包装类:java.lang.Byte 最小值:Byte.MIN_VALUE=-128 最大值:Byte.MAX_VALUE=127 基本类型:short 二进制位数:16 包装类:java.lang.Short 最小值:Short.MIN_VALUE=-32768 最大值:Short.MAX_VALUE=32767 基本类型:int 二进制位数:32 包装类:java.lang.Integer 最小值:Integer.MIN_VALUE=-2147483648 最大值:Integer.MAX_VALUE=2147483647 基本类型:long 二进制位数:64 包装类:java.lang.Long 最小值:Long.MIN_VALUE=-9223372036854775808 最大值:Long.MAX_VALUE=9223372036854775807 基本类型:float 二进制位数:32 包装类:java.lang.Float 最小值:Float.MIN_VALUE=1.4E-45 最大值:Float.MAX_VALUE=3.4028235E38 基本类型:double 二进制位数:64 包装类:java.lang.Double 最小值:Double.MIN_VALUE=4.9E-324 最大值:Double.MAX_VALUE=1.7976931348623157E308 基本类型:char 二进制位数:16 包装类:java.lang.Character 最小值:Character.MIN_VALUE=0 最大值:Character.MAX_VALUE=65535
Die Minimal- und Maximalwerte von Float und Double werden beide in wissenschaftlicher Notation ausgegeben. Das abschließende "E+Zahl" gibt an, dass die Zahl vor dem E mit 10 hoch dieser Zahl multipliziert werden muss. Zum Beispiel ist 3.14E3 gleich 3.14 × 103=3140, und 3.14E-3 ist 3.14 x 10-3 =0.00314.
Tatsächlich gibt es in Java einen weiteren primitiven Typ, void, der auch eine entsprechende Wrapper-Klasse java.lang.Void hat, aber wir können nicht direkt mit ihnen arbeiten.
Standardwerte für Typen
Die folgende Tabelle listet die Standardwerte für jeden Java-Typ auf:
| Datentyp | Standardwert |
|---|---|
| int | 0 |
| long | 0L |
| short | 0 |
| char | '\u0000' |
| Byte | 0 |
| float | 0.0f |
| double | 0.0d |
| boolesch | false |
| Referenztypen (Klassen, Schnittstellen, Arrays) | null |
Notizen:
int,short,long,byteDer Standardwert ist 0.charDer Standardwert ist\u0000(Nullzeichen).floatDer Standardwert ist0.0f。doubleDer Standardwert ist0.0d。booleanDer Standardwert istfalse。- Der Standardwert für Referenztypen (Klassen, Schnittstellen, Arrays) ist
null。
Beispiel
Die Beispielausgaben:
Bool :false Byte :0 Character: Double :0.0 Float :0.0 Integer :0 Long :0 Short :0 String :null
Referenztypen
- In Java sind Variablen vom Referenztyp sehr ähnlich wie Zeiger in C/C++. Ein Referenztyp zeigt auf ein Objekt, und die Variable, die auf das Objekt zeigt, ist eine Referenzvariable. Diese Variablen werden bei der Deklaration als ein bestimmter Typ angegeben, z. B. Employee, Puppy usw. Sobald eine Variable deklariert wurde, kann ihr Typ nicht geändert werden.
- Objekte und Arrays sind Referenzdatentypen.
- Der Standardwert aller Referenztypen ist null.
- Eine Referenzvariable kann verwendet werden, um auf jeden kompatiblen Typ zu verweisen.
- Beispiel: Site site = new Site("Example").
Java-Konstanten
Konstanten können während der Ausführung des Programms nicht geändert werden.
In Java wird das Schlüsselwort final verwendet, um Konstanten zu deklarieren. Die Deklarationsmethode ähnelt der von Variablen:
final double PI = 3.1415927;
Obwohl Konstantennamen auch in Kleinbuchstaben geschrieben werden können, werden zur leichteren Erkennung für Konstanten normalerweise Großbuchstaben verwendet.
Literale können Variablen jedes integrierten Typs zugewiesen werden. Zum Beispiel:
byte a = 68; char a = 'A'
byte, int, long und short können alle in Dezimal-, Hexadezimal- und Oktalschreibweise dargestellt werden.
When using literals, the prefix0eine Oktalzahl, während das Präfix0xeine Hexadezimalzahl darstellt, zum Beispiel:
int decimal = 100; int octal = 0144; int hexa = 0x64;
Wie in anderen Sprachen sind Java-String-Konstanten ebenfalls Zeichenfolgen, die zwischen zwei Anführungszeichen eingeschlossen sind. Nachfolgend finden Sie Beispiele für String-Literale:
"Hello World" "two\nlines" "\"This is in quotes\""
Sowohl String-Konstanten als auch Zeichenvariablen können beliebige Unicode-Zeichen enthalten. Zum Beispiel:
char a = '\u0001'; String a = "\u0001";
Die Java-Sprache unterstützt einige spezielle Escape-Zeichensequenzen.
| Symbol | Zeichenbedeutung |
|---|---|
| \n | Zeilenumbruch (0x0a) |
| \r | Wagenrücklauf (0x0d) |
| \f | Seitenvorschub (0x0c) |
| \b | Rücktaste (0x08) |
| \0 | Nullzeichen (0x0) |
| \s | Leerzeichen (0x20) |
| \t | Tab |
| \" | Doppeltes Anführungszeichen |
| \' | Einfaches Anführungszeichen |
| \\ | Backslash |
| \ddd | Oktales Zeichen (ddd) |
| \uxxxx | Hexadezimales Unicode-Zeichen (xxxx) |
Automatische Typumwandlung
Ganzzahl-, Real- (Konstanten-) und Zeichendaten können in Operationen gemischt werden. Während Operationen werden verschiedene Datentypen zuerst in denselben Typ konvertiert, dann wird die Operation ausgeführt.
Die Konvertierung erfolgt von niedriger Ebene zu hoher Ebene.
低 ------------------------------------> 高 byte,short,char—> int —> long—> float —> double
Für die Datentypkonvertierung müssen die folgenden Regeln gelten:
1. Für den booleschen Typ kann keine Typkonvertierung durchgeführt werden.
-
2. Objekttypen können nicht in Objekte nicht verwandter Klassen konvertiert werden.
-
3. Bei der Konvertierung eines Typs mit größerer Kapazität in einen Typ mit kleinerer Kapazität muss eine erzwungene Typkonvertierung (Cast) verwendet werden.
-
4. Der Konvertierungsprozess kann Überlauf oder Präzisionsverlust verursachen, zum Beispiel:
int i =128; byte b = (byte)i;
Da der byte-Typ 8 Bit breit ist und sein Maximalwert 127 beträgt, verursacht der Wert 128 einen Überlauf, wenn ein int zwangsweise in byte umgewandelt wird.
-
5. Die Umwandlung von Gleitkommazahlen in Ganzzahlen erfolgt durch Verwerfen des Nachkommateils, nicht durch Rundung, zum Beispiel:
(int)23.7 == 23; (int)-45.89f == -45
Automatische Typumwandlung
Die Bitbreite des Datentyps vor der Umwandlung muss geringer sein als die des Datentyps nach der Umwandlung. Zum Beispiel: Der Datentyp short hat 16 Bit, daher kann er automatisch in den Datentyp int mit 32 Bit umgewandelt werden; ebenso hat der Datentyp float 32 Bit und kann automatisch in den Datentyp double mit 64 Bit umgewandelt werden.
Beispiel
Das Ergebnis der Ausführung ist:
char自动类型转换为int后的值等于97 char类型和int计算后的值等于66
Analyse:Der Wert von c1 ist das Zeichena, ein Blick in die ASCII-Code-Tabelle zeigt, dass der entsprechende int-Wert 97 ist, und A entspricht 65, alsoi2=65+1=66。
Typumwandlung
1. Die Bedingung ist, dass die umgewandelten Datentypen kompatibel sein müssen.
2. Format: (type)value, wobei type der Datentyp nach der erzwungenen Typumwandlung ist. Beispiel:
Beispiel
public class ForceTransform { public static void main(String[] args){ int i1 = 123; byte b = (byte)i1;//Erzwungene Typumwandlung in byte System.out.println("Der Wert nach der erzwungenen Typumwandlung von int in byte ist gleich"+b); } }Ausführungsergebnis:
int强制类型转换为byte后的值等于123
Implizite Typumwandlung
1. Der Standardtyp für Ganzzahlen ist int.
2. Dezimalzahlen haben standardmäßig den Gleitkommatyp double; beim Definieren eines float-Typs muss F oder f an die Zahl angehängt werden.
In diesem Abschnitt wurden die grundlegenden Datentypen von Java erläutert. Der nächste Abschnitt behandelt verschiedene Variablentypen und ihre Verwendung.
Weitere Erweiterungen