Java – Grundlegende Datentypen und gekapselte Typen

Primitive Typen haben Standardwerte, während Wrapper-Typen zunächst null sind. Verwenden Sie diese beiden Merkmale dann für verschiedene Unternehmen. Gemäß den Spezifikationen von Alibaba müssen alle POJO-Klassen Verpackungstypen verwenden, und es wird empfohlen, Basistypen für lokale Variablen zu verwenden.

Ali

 Die Java-Sprache bietet acht Grundtypen. Sechs numerische Typen (vier Ganzzahlen, zwei Gleitkommatypen), ein Zeichentyp und ein boolescher Typ. 

1. Ganzzahl: einschließlich int, short, byte, long, der Anfangswert ist 0.

2. Gleitkommatyp: Der Anfangswert von Float und Double beträgt 0,0

3. Zeichen: Der Anfangswert von char ist ein Leerzeichen, also „“. Bei der Ausgabe ist der Effekt auf der Konsole nicht sichtbar.

4. Boolean: Der boolesche Anfangswert ist falsch 

Grundtyp Größe Mindestwert Maximalwert
Boolescher Wert ----- ----- ------
verkohlen 16-Bit Unicode 0 Unicode 2^16-1
Byte 8 Bit -128 +127
kurz 16-Bit -2^15 +2^15-1
int 32-Bit -2^31 +2^31-1
lang 64-Bit -2^63 +2^63-1
schweben 32-Bit IEEE754 IEEE754
doppelt 64-Bit IEEE754 IEEE754
Leere

Beachten:

Das ^ in der Tabelle stellt die Leistung dar

Java verwendet Unicode, 2 Bytes stellen ein Zeichen dar und 1 Byte entspricht 16 Bits. 

Grundtyp der Wrapper-Klasse

Integer, Long, Short, Byte, Character, Double, Float, Boolean, BigInteger und BigDecmail

Unter diesen haben BigInteger und BigDecimal keine entsprechenden Grundtypen und werden hauptsächlich für hochpräzise Operationen verwendet. BigInteger unterstützt Ganzzahlen beliebiger Genauigkeit. 

BigDecimal unterstützt Operationen mit beliebiger Genauigkeit und Dezimalpunkt

Grundtypen: int, double, float, long, byte, boolean , char
Verpackungstypen: integer, Double, Float, Long, Byte, Boolean, Char

Eigenschaften der Grundtypen

1. Basisdatentypen nutzen die Wertübertragung bei der Parameterübergabe.

2. Auf dem Stapel werden Basistypen erstellt (es liegt ein Leckproblem vor).

3. Schöpfung geschieht nicht durch Neues

Merkmale von Pakettypen

1. Über „Neu“ erstellen oder direkt zuweisen.

2. Bei der Übergabe von Parametern verwenden wir „Referenzübergabe“, die Methode zur Adressübergabe.

3. Die Erstellung erfolgt auf dem Heap

4. Der Wert der Datentyp-Wrapper-Klasse ist unveränderlich

Vorteile der Pakettypen:

Um einen Pakettyp zu erstellen, können Sie einige Methoden verwenden, die der Basistyp nicht hat, wie etwa valueOf(), toString() usw. Wenn Sie außerdem einen Verweis auf ein int-Objekt anstelle eines Werts übergeben möchten, können Sie nur eine Wrapper-Klasse verwenden.

Gemeinsamkeiten und Unterschiede zwischen Grundtypen und Pakettypen :

1. In Java ist alles ein Objekt, aber die acht Grundtypen sind keine Objekte.

2. Bei verschiedenen Deklarationsmethoden müssen Basistypen nicht über das Schlüsselwort new erstellt werden, während gekapselte Typen das Schlüsselwort new erfordern.

3. Die Speichermethode und der Speicherort sind unterschiedlich. Der Basistyp speichert direkt den Wert der Variablen, auf den durch Speichern auf dem Stapel effizient zugegriffen werden kann. Der gekapselte Typ muss über eine Referenz auf die Instanz und auf die spezifische Instanz verweisen wird im Heap gespeichert;

4. Der Anfangswert ist unterschiedlich. Der Anfangswert des gekapselten Typs ist null, und der Anfangswert des Basistyps hängt vom jeweiligen Typ ab. Beispielsweise ist der Anfangswert des int-Typs 0 und der boolesche Typ FALSCH;

5. Verschiedene Verwendungsmethoden. Beispielsweise können beim Arbeiten mit Sammlungsklassen nur Verpackungstypen verwendet werden.

6. Wann sollten Sie eine Wrapper-Klasse und wann einen Basistyp verwenden? Dies hängt vom Grundgeschäft ab: Ob in diesem Feld Nullwerte zulässig sind, wenn dies zulässig ist, müssen Sie eine Wrapper-Klasse verwenden. Andernfalls Der Grundtyp reicht aus. Wenn Sie Funktionen wie Generics und Reflection verwenden, müssen Sie eine Wrapper-Klasse verwenden!

Quellcode

Schauen Sie sich  Boolean die Eigenschaften und den Konstruktor an, um zu sehen, wie es umbrochen wird boolean

// final boolean类型的属性,通过构造方法注入值
private final boolean value;
​
// 构造方法 Boolean a = true 实际上就是调用这个方法
public Boolean(boolean value) {
    this.value = value;
}
​
// 构造方法
public Boolean(String s) {
    this(parseBoolean(s));
}

Einfach ausgedrückt müssen die durch Boolean definierten Attribute einen Wert haben. Wenn  Boolean der Objektwert lautet  null, tritt NPE während des Entpackvorgangs auf.

Grundlegende Datentypen und Wrapper-Typen verwenden Standards

Ali

Notiz:

Die Zuweisungsmethode der Wrapper-Klasse ist valueof, aber ab Java 5.0 (1.5) kann die JAVA Virtual Machine (Java Virtual Machine) die automatische Konvertierung zwischen Basistypen und ihren entsprechenden Wrapper-Klassen durchführen. Daher verwenden wir ihre Wrapper-Klassen genau wie Basistypen, wenn wir Zuweisungen, Parameterübertragungen und mathematische Operationen durchführen. Dies bedeutet jedoch nicht, dass Sie Methoden, die nur in ihren Wrapper-Klassen verfügbar sind, über Basistypen aufrufen können. Darüber hinaus verwenden die Wrapper-Klassen aller Grundtypen (einschließlich void) die endgültige Änderung, sodass wir sie nicht erben können, um neue Klassen zu erweitern, und auch keine ihrer Methoden überschreiben können.

Schauen Sie sich den Quellcode von valueof an, um den Caching-Mechanismus zu verstehen

public static Integer valueOf(int i) {
     assert IntegerCache.high>= 127;
     if (i >= IntegerCache.low&& i <= IntegerCache.high)
     return IntegerCache.cache[i+ (-IntegerCache.low)];
     return new Integer(i); 
}

Der Cache-Wertebereich jeder Verpackungsklasse:

boolean: true und false 
byte: -128~127 
char: 0~127 
short: -128~127 
int: -128~127 
long: -128~127 
float und double werden nicht zwischengespeichert

Der Wert innerhalb des Cache-Bereichs entspricht einem geöffneten Raum oder einem neuen Objekt.

Java – Integer-Konstanten-Cache-Pool (Standardwertbereich -128–127)_Integer-Cache-Datenbereich – CSDN-Blog

Ich denke du magst

Origin blog.csdn.net/MinggeQingchun/article/details/130796693
Empfohlen
Rangfolge