Heim >Backend-Entwicklung >XML/RSS-Tutorial >Kapitel 2 Verpackung
Wir wissen, dass Java eine objektorientierte Sprache ist und eine ihrer Essenzen darin besteht, dass Polymorphismus verwendet werden kann, um die Flexibilität des Programms zu verbessern.
Aber es gibt 8 Grundtypen in Java: Byte, Short, Int, Long, Float, Double, Char, Boolean. Sie existieren im Gedächtnis als Werte, nicht als Objekte.
Sie sind keine Unterklassen von Object und können nicht an der objektorientierten Entwicklung teilnehmen. Vor der Java1.5-Version konnte der folgende Code nicht übergeben werden.
package com.souvc.api;public class Test { public static void main(String[] args) { String str = "hello"; doSome(str);// 可以,因为String是Object的子类 int i = 1; // 程序编译不通过,原因在于int不是Object的子类,不能使用多态性。 doSome(i); } public static void doSome(Object o) { // .... } }
Der Grund für das Problem ist, dass der Basistyp int keine Vererbungsbeziehung hat und keine Unterklasse von Object ist. Wenn wir also möchten, dass der Basistyp in Form eines Objekts existiert, müssen wir eine Klasse Integer definieren und dann ihre Instanz verwenden, um einen Basistyp int zu beschreiben.
Der Vorteil davon besteht darin, dass wir Objekte verwenden, um grundlegende Typdaten zu beschreiben, und Klassen von Object erben. Dadurch können Basistypen an der objektorientierten Entwicklung teilnehmen. Glücklicherweise müssen Klassen wie Integer nicht von uns definiert werden, da Java bereits Wrapper-Klassen bereitstellt, die 8 Grundtypen entsprechen.
Hinweis: Die automatische Unboxing-Funktion erschien nach Version 1.5 von Java und der obige Code kann normal kompiliert werden. Das automatische Aus- und Verpacken von Kartons werden wir später ausführlich beschreiben.
Für die 8 Grundtypen stellt Java die entsprechenden Verpackungsklassen bereit:
Grundtyp-Verpackungsklasse
Byte Java. lang.Byte
short java.lang.Short
int java.lang.Integer
long java.lang.Long
float java lang. Float
double java.lang.Double
char java.lang.Character
boolean java.lang.Boolean
Außer für Character und Boolean, deren übergeordnete Klasse Object ist, wird der Rest geerbt von: java.lang.Number
Number ist eine abstrakte Klasse. Es kann nicht selbst instanziiert werden. Unterklassen von Number müssen Methoden bereitstellen, um die dargestellten Werte in Byte, Double, Float, Int, Long und Short umzuwandeln
Zum Beispiel:
abstract double doubleValue() gibt den angegebenen Wert in zurück Double-Form-Wert
abstract int intValue() Gibt den angegebenen Wert in int-Form zurück
abstract float floatValue() Gibt den angegebenen Wert in Float-Form zurück
Für die übrigen abstrakten Methoden Weitere Informationen finden Sie in der API-Dokumentation: java.lang.Number.
Jetzt lernen wir, wie man zwischen Basistypen und Wrapper-Klassen konvertiert.
Wenn wir den Basistyp in eine Wrapper-Klasse konvertieren müssen, können wir eine statische Methode valueOf() der Wrapper-Klasse aufrufen:
Integer i = Integer. valueOf( 1);
Double d = Double.valueOf(1.1);
Wenn wir die Wrapper-Klasse in einen Basistyp konvertieren müssen, können wir die verwenden Methode der Wrapper-Klasse xxxValue()-Methode (die Methodennamen verschiedener Wrapper-Klassen sind hier nicht genau gleich, aber sie enden alle mit Value):
Integer i = new Integer(1);int n = i.intValue();
Double d = new Double(1.1);double dn = d.doubleValue();
Obwohl wir die obige Methode verwenden können, um Kommunikation zwischen dem Basistyp und der Wrapper-Klasse Convert. Beim eigentlichen Schreiben von Code ist es jedoch relativ mühsam. Java hat nach Version 1.5 eine neue Funktion eingeführt: automatisches Unboxing.
Der folgende Code kann in Java1.4 nicht kompiliert werden, kann aber nach Java1.5 kompiliert werden:
int i = new Integer(1);//Die Wrapper-Klasse kann automatisch erstellt werden in Basistyp konvertiert Auto-Unboxing
Ganzzahl in = 1;//Sie können Basistypen automatisch in Verpackungsklassen konvertieren Auto-Boxing
Wie implementiert Java also die automatische Implementierung? Unboxing? Was ist mit Boxen?
Tatsächlich unterstützt die JVM diese Funktion nicht. Das automatische Entpacken von Boxen ist lediglich ein „Vorverarbeitungs“-Vorgang des Compilers. Der Compiler nimmt beim Kompilieren in Bytecode Änderungen vor, wenn er die Notwendigkeit einer Konvertierung zwischen Wrapper-Klassen und primitiven Typen erkennt:
im Quellcode im kompilierten Bytecode
Ganzzahl a = 100 => Integer.valueOf(100);
Integer b = 200 => Integer b = Integer.valueOf(200);
Integer c = a +b => valueOf (a.intValue( ) + b.intValue( ));
double d = c => double d = c ;
2.1 Ganzzahlklasse – Ganzzahlklasse 34
2.1.1 Konstruktormethode – Konstruktormethode der Integer-Klasse 34
2.1.2 Konstante – Konstante der Integer-Klasse 34
2.1.3 bitCount-Methode – Ermitteln der Zahl 1 im Zweierkomplement Quantity 34
2.1.4 byteValue-Methode – Ermitteln des Werts des Byte-Typs 35
2.1.5 CompareTo-Methode – Vergleichen von Ganzzahlen 35
2.1.6 Decode-Methode – Dekodieren der Zeichenfolge in den Typ „int“ 35
2.1. 7 Die Methode doubleValue – gibt einen Double-Wert zurück 36
2.1.8 Die Methode equal – bestimmt die Gleichheit ganzzahliger Objekte 36
2.1.9 Die Methode floatValue – ermittelt den Float-Wert 37
2.1.10 Der getInteger Methode – Ermitteln Sie den Systemattributwert der Ganzzahl 37
2.1.11 Die Methode hashCode – Generieren Sie den Hash-Code der Ganzzahl 39
2.1.12 Die Methode HighestOneBit – Ermitteln Sie den Index des höchsten binären Bits 1 von die Ganzzahl 39
2.1.13 intValue()-Methode – erhalte den int-Wert 40
2.1.14 longValue-Methode – erhalte den long-Wert 40
2.1.15 lowestOneBit-Methode – erhalte den Index des niedrigsten Bits 1 der ganzzahligen Binärdatei 41
2.1.16 parseInt-Methode – Analysieren Sie einen String in einen int-Wert 41
2.1.17 Reverse-Methode – Kehren Sie die Bitreihenfolge des ganzzahligen Zweierkomplements um 43
2.1.18 ReverseBytes-Methode – Kehren Sie die Reihenfolge der Ganzzahlbytes um 44
2.1.19 ShortValue-Methode – Kurzwert 44 abrufen
2.1.20 Signum-Methode – Ganzzahlzeichen 44 abrufen
2.1.21 ToBinaryString-Methode – Erzeugen Sie eine binäre Zeichenfolge mit der Ganzzahl 45
2.1.22 toHexString-Methode – generiert eine hexadezimale Zeichenfolge mit Ganzzahlen 45
2.1.23 toOctalString-Methode – generiert eine oktale Zeichenfolge mit Ganzzahlen 46
2.1.24 toString-Methode – generiert eine dezimale Zeichenfolge mit Ganzzahlen 47
2.1.25 ValueOf-Methode – Integer-Objekt erstellen 49
2.2 Long-Klasse – Long-Integer-Klasse 50
2.2.1 Konstruktionsmethode – Long-Klasse Konstruktionsmethode 51
2.2.2 Konstanten – Konstanten der Long-Klasse 51
2.2.3 bitCount-Methode – ermittelt die Anzahl der Einsen im Zweierkomplement 51
2.2.4 byteValue-Methode – ermittelt den Bytewert 51
2.2. 5 CompareTo-Methode – lange Ganzzahl vergleichen 52
2.2.6 Methode dekodieren – Zeichenfolge in langen Typ dekodieren 52
2.2.7 Methode doubleValue – doppelten Wert zurückgeben 53
2.2. 8. Methode equal – Bestimmen Sie die Gleichheit von Long-Integer-Objekte 53
2.2.9 floatValue-Methode – Float-Wert abrufen 54
2.2.10 getLong-Methode – Systemattributwert von Long-Integer-Objekten abrufen 54
2.2.11 hashCode-Methode – Erzeugen Sie den Hash-Code des lange Ganzzahl 56
2.2.12 Die Methode „highestOneBit“ – Ermittelt den Index des höchsten binären Bits 1 der langen Ganzzahl 56
2.2.13 Die Methode intValue() – Ermittelt den int-Wert 57
2.2.14 longValue-Methode – Ermitteln Sie den Long-Wert 57
2.2.15 LowestOneBit-Methode – Ermitteln Sie den Index des niedrigsten Bits 1 der Long-Integer-Binärdatei 57
2.2.16 ParseLong-Methode – Analysieren Sie die Zeichenfolge in einen Long-Wert 58
2.2.17 Reverse-Methode – Kehrt die Bitreihenfolge des Zweierkomplements einer langen Ganzzahl um 60
2.2.18 ReverseBytes-Methode – Kehrt die Reihenfolge der langen Ganzzahlbytes um 60
2.2.19 ShortValue-Methode – Kurzwert abrufen 61
2.2.20 Signum-Methode – das lange Ganzzahlzeichen abrufen 61
2.2.21 toBinaryString-Methode – eine lange ganzzahlige binäre Zeichenfolge generieren 61
2.2.22 toHexString-Methode – eine lange ganzzahlige Hexadezimalzeichenfolge generieren 62
2.2.23 toOctalString-Methode – generiert eine oktale Zeichenfolge mit einer langen Ganzzahl 62
2.2.24 toString-Methode – generiert eine dezimale Zeichenfolge mit einer langen Ganzzahl 63
2.2.25 valueOf-Methode – erstellt ein langes Objekt 65
2.3 Short-Klasse – Short-Integer-Klasse 67
2.3.1 Konstruktionsmethode – Konstruktionsmethode der Short-Klasse 67
2.3.2 Konstanten – Konstanten der Short-Klasse 67
2.3.3 Methode „compareTo“ – kurze Ganzzahlen vergleichen 67
2.3.4 Methode „decode“ – Zeichenfolgen in kurze Typen dekodieren 68
2.3.5 Methode „doubleValue“ – Doppelten Wert zurückgeben 68
2.3.6 Methode „Equals“ – Bestimmen, ob kurz Integer-Objekte sind gleich 68
2.3.7 FloatValue-Methode – Float-Wert abrufen 69
2.3.8 HashCode-Methode – Kurze Ganzzahl generieren Der Hash-Code 69
2.3.9 intValue()-Methode – Int-Wert abrufen 70
2.3.10 longValue-Methode – erhält den langen Wert 70
2.3.11 parseShort-Methode – analysiert die Zeichenfolge in den kurzen Wert 70
2.3.12 reverseBytes-Methode – kehrt die Reihenfolge der kurzen ganzzahligen Bytes 72 um
2.3.13 shortValue-Methode – Kurzwert abrufen 72
2.3.14 toString-Methode – kurze Ganzzahl-Dezimalzeichenfolge generieren 73
2.3.15 valueOf-Methode – Kurzobjekt erstellen 73
2.4 Boolesche Klasse – Boolesche Klasse 75
2.4.1 Konstruktionsmethode – –Konstruktionsmethode der Booleschen Klasse 75
2.4.2 Konstanten – Konstanten der Booleschen Klasse 75
2.4.3 booleanValue-Methode – Booleschen Wert 76 abrufen
2.4.4 Methode „compareTo“ – Boolesche Werte vergleichen 76
2.4.5 equals-Methode – Gleichheit bestimmen 77
2.4.6>getBoolean-Methode – Systemattributwert des booleschen Typs 77 abrufen
2.4.7>hashCode-Methode – generiert den Hash-Code des booleschen Objekts 78
2.4.8 parseBoolean-Methode – analysiert einen String in einen booleschen Wert 78
2.4.9>toString-Methode – generiert einen String von Boolesche Werte 78
2.4.10> valueOf-Methode – erstellt ein boolesches Objekt 79
2.5 Byte-Klasse – Byte-Objekt 80
2.5.1 Konstruktor – Konstruktormethode der Byte-Klasse 80
2.5.2 Konstante – Konstante der Byte-Klasse 80
2.5 .3 compareTo-Methode – Byte-Objekte vergleichen 80
2.5.4 decode-Methode – dekodieren Sie die Zeichenfolge in einen Byte-Wert 81
2.5.5 doubleValue-Methode – erhalten Sie den Double-Wert 82
2.5.6 equals-Methode – bestimmen Sie das Byte Gleichheit 82
2.5.7 floatValue-Methode – Float-Wert abrufen 83
2.5.8 hashCode-Methode – Hash-Code des Byte-Objekts generieren 83
2.5 .9 intValue-Methode – Int-Wert abrufen 83
2.5.10 longValue-Methode – Long-Wert 83 abrufen
2.5.11 parseByte-Methode – Zeichenfolge in Byte-Wert 84 analysieren
2.5.12 shortValue-Methode – Kurzwert 85 abrufen
2.5.13 toString-Methode – Dezimalzeichenfolge generieren von Bytewert 85
2.5.14 valueOf-Methode——Erstellen Sie ein Byte-Objekt 86
2.6 Character Class - Zeichenklasse 88
2.6.1 Konstruktor – Konstruktormethode von Zeichenklasse 88
2.6.2 Konstante – Konstante der Zeichenklasse 88
2.6.3 charCount-Methode ——Berechnen Sie die Anzahl der Codepunkte des angegebenen Zeichens 89
2.6.4 charValue-Methode——Ermitteln Sie das Zeichen Wert 89
2.6.5 CodePointAt-Methode – Ermitteln Sie den Codepunkt des Zeichenarray-Elements 90
2.6.6 codePointBefore-Methode – Ermitteln Sie den Codepunkt des vorherigen Elements des Zeichenarray-Index 91
2.6 .7 codePointCount-Methode – Gibt die Anzahl der Codepunkte im Unterarray des Zeichenarrays zurück 93
2.6.8 CompareTo-Methode – – Zeichenobjekte vergleichen 94
2.6.9 equals-Methode – bestimmt, ob Zeichenobjekte gleich sind 95
2.6.10>getNumericValue-Methode – gibt den durch das Zeichen 95 dargestellten int-Wert zurück
2.6.11>getType-Methode – gibt einen Wert zurück, der die allgemeine Kategorie des Zeichens 97 angibt
2.6.12 Die hashCode-Methode – generiert den Hash-Code des Zeichenobjekts 97
2.6.13 Die Methode isDefined – ermittelt, ob es sich um ein Unicode-Zeichen handelt 98
2.6.14 Die Methode isDigit – ermittelt, ob es sich um ein numerisches Zeichen handelt 98
2.6. 15 isLetter-Methode – ermittelt, ob es sich um ein alphabetisches Zeichen handelt 99
2.6.16 isLowerCase-Methode – ermittelt, ob es sich um ein Kleinbuchstabe handelt 100
2.6.17 isUpperCase-Methode – ermittelt, ob es sich um ein Großbuchstabe handelt 100
2.6 .18 toLowerCase-Methode – Konvertierung in Kleinbuchstaben 101
2.6.19toUpperCase-Methode – Konvertierung in Großbuchstaben 101
2.7Zahlenklasse mit doppelter Genauigkeit 102
2.7 .1 Konstruktor – Konstruktor der Double-Klasse 102
2.7.2 Konstante – Konstante der Double-Klasse 102
2.7.3 byteValue-Methode – Bytewert 102 abrufen
2.7.4 Compare-Methode – digitale Objekte mit doppelter Genauigkeit vergleichen 103
2.7.5 Methode „compareTo“ – vergleicht zwei Double-Objekte 103
2.7.6 Methode „intValue“ – gibt diesen Double-Wert in int-Form zurück 104
2.7.7 Die Methode „doubleToLongBits“ – gibt die Darstellung des angegebenen Gleitkommas zurück Wert 104
2.7.8 Die doubleToRawLongBits-Methode – behält den NaN-Wert bei und gibt die Darstellung des angegebenen Gleitkommawerts zurück 105
2.7.9 Die doubleValue-Methode – erhält den doppelten Wert 105
2.7.10 equals-Methode – Bestimmen Sie, ob Double-Objekte gleich sind 106
2.7.11 floatValue-Methode – Float-Wert erhalten 107
2.7.12 hashCode-Methode – Erzeugen Sie den Hash-Code eines Double-Objekts 107
2.7.13 isInfinite-Methode – Bestimmen Sie, ob die Die Größe des Double-Werts ist unendlich 107
2.7.14 isNaN-Methode – bestimmt, ob der Double-Wert ein nicht numerischer Wert ist 108
2.7.15 longBitsToDouble-Methode—— Gibt den Double-Wert der gegebenen Bitdarstellung zurück 109
2.7.16 longValue-Methode – erhält den Long-Wert 110
2.7.17 parseDouble-Methode – analysiert die Zeichenfolge in einen Double-Wert 110
2.7.18 shortValue-Methode— — Ruft den Short-Wert 110 ab
2.7. 19 toHexString-Methode – generiert eine hexadezimale Zeichenfolge mit Zahlen doppelter Genauigkeit 111
2.7.20 toString-Methode – generiert eine dezimale Zeichenfolge mit Zahlen doppelter Genauigkeit 112
2.7 .21 valueOf-Methode – erstellt ein Doppelobjekt 112
2.8 Float – Gleitkommaklasse 113
2.8.1 Konstruktor – Konstruktor der Float-Klasse 113
2.8.2 Konstante – Konstante der Float-Klasse 114
2.8.3 ByteValue-Methode – Bytewert 114 abrufen
2.8.4 Vergleichsmethode - Vergleichen Sie Float-Objekte 114
2.8.5 CompareTo-Methode - Vergleichen Sie die von zwei Float-Objekten dargestellten Werte 115
2.8.6 DoubleValue-Methode - Erhalten Sie Double-Werte 115
2.8 Methode – bestimmt, ob Double-Objekte gleich sind 115
2.8.8 floatToIntBits-Methode – gibt die Darstellung eines Gleitkommawerts zurück 116
2.8.9 floatToRawIntBits-Methode – behält nicht numerische Werte und gibt die Darstellung des angegebenen zurück Gleitkommawert 117
2.8.10 FloatValue-Methode – Holen Sie sich den Float-Wert 118
2.8.11 HashCode-Methode – Gibt den Hash-Code des Float-Objekts zurück 118
2.8.12 IntBitsToFloat-Methode – Gibt den Float im zurück angegebene Bitdarstellung Wert 118
2.8.13 intValue-Methode – ermittelt den int-Wert 119
2.8.14 isInfinite-Methode – ermittelt, ob die Größe des Float-Werts unendlich ist 120
2.8.15 isNaN-Methode – ermittelt, ob der Float-Wert ist ein nicht numerischer Wert 120
2.8.16 longValue-Methode – erhält den Long-Wert 121
2.8.17 parseFloat-Methode – analysiert die Zeichenfolge in einen Float-Wert 121
2.8.18 shortValue-Methode – Holen Sie sich den Kurzwert 122
2.8.19 toHexString-Methode – generiert eine hexadezimale Zeichenfolge von Gleitkommazahlen. 122
2.8.20 toString-Methode – generiert eine dezimale Zeichenfolge von Gleitkommazahlen 123
2.8.21 valueOf Methode—— Erstellen Sie ein Gleitkommaobjekt 124
Das Obige ist der Inhalt der Verpackungsklasse. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!