1. IntegerKlasse
Integerist auch insofern gut, als es eine Klasse ist, was bedeutet, dass es Felder und Methoden haben kann. Und natürlich hat es sie. Viele von ihnen – Dutzende von ihnen. Hier betrachten wir die grundlegendsten.
Die IntegerKlasse verfügt über zwei Felder, die die maximal und minimal möglichen Werte des intTyps enthalten:
| Feld | Beschreibung |
|---|---|
|
Maximal möglicher Wert des intTyps |
|
Kleinstmöglicher Wert des intTyps |
intManchmal möchte man einer Variablen den kleinst- oder größtmöglichen Wert zuweisen . Um Ihren Code nicht mit unverständlichen Konstanten zu überladen, können Sie dies ganz klar wie folgt schreiben:
| Code | Beschreibung |
|---|---|
|
|
Die IntegerKlasse verfügt auch über einige interessante Methoden. Hier sind sie:
| Methoden | Beschreibung |
|---|---|
|
Gibt eine Zeichenfolge zurück, die die hexadezimale Darstellung der Zahl ist |
|
Gibt eine Zeichenfolge zurück, die die binäre Darstellung der Zahl ist |
|
Gibt eine Zeichenfolge zurück, die die oktale Darstellung der Zahl ist |
|
Wickelt das Übergebene intin ein IntegerObjekt ein |
|
Gibt die aus der übergebenen Zeichenfolge erhaltene Zahl zurück |
Sie sind bereits auf die statische Integer.parseInt()Methode gestoßen. Erinnern wir uns, wie es funktioniert:
int name = Integer.parseInt(string);
Wenn eine Zeichenfolge, die eine Zahl (nur Ziffern) enthält, an die parseInt()Methode übergeben wird, analysiert sie die Zeichenfolge und gibt die darin enthaltene Zahl zurück.
Auch die restlichen Methoden sind nützlich. Einige von ihnen können beispielsweise eine übergebene Zahl in eine Zeichenfolge umwandeln, die die binäre, oktale oder hexadezimale Darstellung der Zahl enthält.
2. DoubleKlasse
Im Allgemeinen Doubleähnelt die Klasse der IntegerKlasse, nur dass sie eine doublestatt einer umschließt int. Es gibt auch Bereiche und Methoden, die für uns von Interesse sein werden. Betrachten Sie einige davon:
Die DoubleKlasse hat sechs interessante Bereiche:
| Feld | Beschreibung |
|---|---|
|
Negative Unendlichkeit |
|
Positive Unendlichkeit |
|
Kleinstmöglicher Exponent (2 x ) |
|
Maximal möglicher Exponent (2 x ) |
|
Kleinstmöglicher Wert des doubleTyps |
|
Maximal möglicher Wert des doubleTyps |
Unendlichkeit
Wenn man -1.0durch dividiert 0.0, erhält man eine negative Unendlichkeit. Wenn man 1.0durch dividiert 0.0, erhält man eine positive Unendlichkeit. Sie können a nicht nur durch Null dividieren double, sondern auch das Ergebnis dieser Operationen speichern.
Exponent von adouble
Den Exponenten zu verstehen ist einfach. Intern besteht ein Double aus einer Mantisse und einem Exponenten. Aber hier ist der Wert des Exponenten nicht , sondern . Wenn also der Exponent um erhöht wird , verdoppelt sich der Gesamtwert der Zahl.10x2x1
MIN_EXPONENT == -1024, was bedeutet , was ungefähr gleich ist2-102410-308
Und natürlich Doubleverfügt die Klasse über interessante Methoden:
| Methoden | Beschreibung |
|---|---|
|
Gibt eine Zeichenfolge zurück, die die hexadezimale Darstellung der Zahl ist |
|
Prüft, ob die übergebene Zahl unendlich ist. |
|
Überprüft, ob die übergebene Nummer vorhanden istNaN |
|
Wickelt das Übergebene doublein ein DoubleObjekt ein |
|
Gibt die aus der übergebenen Zeichenfolge erhaltene Zahl zurück |
Interessanterweise gibt es eine isInfinite()Methode, die zurückgibt true, wenn die übergebene Zahl positiv oder negativ unendlich ist.
Die isNaN()Methode ist ähnlich – sie prüft, ob die übergebene Zahl NaN( Not-a-Number , eine spezielle Konstante, die einen undefinierten Wert angibt) ist.
3. CharacterKlasse
Die CharacterKlasse ist vor allem wegen ihrer großen Anzahl statischer Utility-Methoden interessant, mit denen Sie überprüfen können, ob Zeichen zu verschiedenen Kategorien gehören.
Beispiele
| Methoden | Beschreibung |
|---|---|
|
Überprüft, ob ein Zeichen ein alphabetisches Zeichen ist |
|
Überprüft, ob das Zeichen ein Buchstabe ist |
|
Prüft, ob das Zeichen eine Ziffer ist |
|
Prüft, ob das Zeichen ein Leerzeichen, ein Zeilenumbruch oder ein Seitenumbruch ist (Codes: 12, 13, 14) |
|
Überprüft, ob das Zeichen ein Leerzeichen ist: ein Leerzeichen, ein Tabulator usw. |
|
Prüft, ob das Zeichen ein Kleinbuchstabe ist |
|
Überprüft, ob das Zeichen ein Großbuchstabe ist |
|
Wandelt das Zeichen in Kleinbuchstaben um |
|
Wandelt das Zeichen in Großbuchstaben um |
Ein Merkmal dieser Methoden ist, dass sie mit allen bekannten Alphabeten funktionieren: Arabische Ziffern werden als Ziffern usw. klassifiziert.
4. BooleanKlasse
Der BooleanTyp ist praktisch derselbe wie der booleanTyp. Die Unterschiede sind minimal.
Nachfolgend zeigen wir eine vereinfachte Version der BooleanKlasse:
| Code | Beschreibung |
|---|---|
|
Konstanten: TRUEè FALSE Variablenklassenkonstruktor Die Methode gibt den Wert der internen Variablen zurück. BooleanDiese statische Methode konvertiert in und in . trueTRUEfalseFALSE |
Der BooleanTyp hat zwei Konstanten (zwei Felder):
| Konstanten der Klasse | Gegenstück zum booleschen Typ | Beschreibung |
|---|---|---|
|
|
WAHR |
|
|
FALSCH |
Sie können mit ihnen auf die gleiche Weise arbeiten wie mit dem booleanTyp:
| Code | Notiz |
|---|---|
|
Die BooleanKlasse ist die einzige Klasse, die innerhalb einer Bedingung geschrieben werden kann |
|
Alle drei Variablen sind gleich true/TRUE |
|
Konstanten können mit beiden verglichen werden. equalsDies == funktioniert auch. |
Autoboxing funktioniert hier hervorragend. Das bedeutet, dass Sie diesen Typ auf die gleiche Weise wie den booleanTyp verwenden können – es gibt keine Fallstricke, auf die Sie achten müssen.
| Wie es geschrieben steht | Wie es funktioniert |
|---|---|
|
|
Und hier ein Vergleich der booleanund- BooleanTypen:
boolean a = true;
Boolean b = true; // b will be equal to Boolean.TRUE
Boolean c = true; // c will be equal to Boolean.TRUE
a == b; // true (compared by value)
a == c; // true (compared by value)
b == c; // true (compared by reference, but they point to the same object)
Wenn Sie wirklich ein unabhängiges BooleanObjekt benötigen, müssen Sie es explizit erstellen:
boolean a = true;
Boolean b = new Boolean(true); // New Boolean object
Boolean c = true; // c will be equal to Boolean.TRUE
a == b; // true (compared by value)
a == c; // true (compared by value)
b == c; // false (compared by reference, and they point to different objects)
Noch ein Beispiel, bei dem wir ein BooleanInneres eines verwenden if:
| Code | Notiz |
|---|---|
|
Dies wird kompiliert und funktioniert |
Das wird kompiliert, aber es wird nicht funktionieren!
| Code | Notiz |
|---|---|
|
Fehler . Diese Zeile löst eine Ausnahme aus |
5. Zwischenspeichern von Werten während des Autoboxings
Es gibt einige Fallstricke im Zusammenhang mit Integer-Wrapper-Typen.
Wie Sie bereits wissen, wird beim Vergleich von an intund an Integerdas Integerin ein umgewandelt int:
| Wie es geschrieben steht | Wie es funktioniert |
|---|---|
|
|
Wenn Sie zwei IntegerObjekte miteinander vergleichen, werden sie nicht in ints umgewandelt:
| Code | Konsolenausgabe |
|---|---|
|
|
a == cund , aber , denn wenn wir vergleichen , vergleichen wir Referenzen. Das ist im Wesentlichen das, was wir erwarten würden.b == ca != bab
Überraschung
Wenn wir jedoch 500durch ersetzen 100, erhalten wir ein völlig anderes Ergebnis:
| Code | Konsolenausgabe |
|---|---|
|
|
Das Problem hierbei ist, dass beim Autoboxing nicht immer tatsächlich ein neues IntegerObjekt erstellt wird . Objekte werden für Werte -128durch 127Inclusive zwischengespeichert.
Die IntegerKlasse verfügt über ein verstecktes Array, das Objekte speichert: Integer(-128), Integer(-127), ... Integer(126),Integer(127)
Wenn Sie schreiben Integer x = 128, erstellt der Autoboxing-Prozess ein neues Objekt. Wenn Sie jedoch schreiben Integer x = 127, ruft der Autoboxing-Prozess das vorhandene Objekt aus dem Cache (aus dem Array) ab.
Wenn Sie nicht möchten, dass das IntegerObjekt aus dem Cache kommt, müssen Sie es explizit erstellen, indem Sie Folgendes schreiben:Integer x = new Integer(127);
Alle Wrapper-Typen verfügen über einen solchen Cache: Integer, Long, Byte, Short, Boolean. Für den BooleanTyp sind sowohl seine TRUEals auch FALSEseine Werte Konstanten, sodass sie im Wesentlichen auch zwischengespeichert werden.
GO TO FULL VERSION