JavaRush /Java-Blog /Random-DE /Java-Integer-Klassenhandbuch

Java-Integer-Klassenhandbuch

Veröffentlicht in der Gruppe Random-DE
In diesem Artikel werden wir über die Integer-Klasse sprechen. Betrachten wir diese Fragen:
  • Was sind Wrapper-Klassen?
  • automatisches Packen/Entpacken von Primitiven;
  • Betrieb der Integer-Klasse, ihrer Methoden und Konstanten.
Tutorial zur Java-Integer-Klasse – 1

Wrapper-Klassen primitiver Typen

Wie Sie wissen, verfügt Java über verschiedene Datentypen, die in zwei Blöcke unterteilt werden können:
  • Primitive;
  • Referenz.
In Java gibt es mehrere primitive Datentypen:
  • ganze Zahlen – Byte, kurz, int, lang;
  • Gleitkommazahlen (reell) – float, double;
  • logischer Datentyp – boolean;
  • Zeichendatentyp - char.
Jeder primitive Datentyp verfügt über eine eigene Wrapper-Klasse. Ein Referenzdatentyp, der seinen primitiven kleinen Bruder in ein Java-Objekt einschließt. Nachfolgend sind die primitiven Datentypen und ihre entsprechenden Wrapper-Klassen aufgeführt:
Primitiver Typ Wrapper-Klasse
Byte Byte
kurz Kurz
int Ganze Zahl
lang Lang
schweben Schweben
doppelt Doppelt
Boolescher Wert Boolescher Wert
verkohlen Charakter
In praktischer Hinsicht haben Primitive und ihre Wrapper-Klassen viele Gemeinsamkeiten. Die meisten Operationen werden identisch ausgeführt. Wrapper-Klassen weisen jedoch eine Reihe von Merkmalen auf, die für Grundelemente nicht charakteristisch sind. Erstens gibt es Klassen: Wenn wir mit Wrapper-Klassen arbeiten, arbeiten wir mit Objekten. Zweitens (alles, was folgt, ergibt sich aus Punkt eins) können diese Objekte null sein. Drittens stellen Wrapper-Klassen eine Reihe von Konstanten und Methoden bereit, die die Arbeit mit einem bestimmten Datentyp erleichtern. In diesem Artikel werfen wir einen genaueren Blick auf die Arbeit mit der Integer-Klasse.

Die ganze Zahl

Die Integer-Klasse ist eine Wrapper-Klasse vom primitiven Typ int. Diese Klasse enthält ein einzelnes Feld vom Typ int. Als Wrapper-Klasse stellt Integer verschiedene Methoden zum Arbeiten mit Ints sowie eine Reihe von Methoden zum Konvertieren von Int in String und String in Int bereit. Im Folgenden betrachten wir verschiedene Beispiele für die Arbeit mit der Klasse. Beginnen wir mit der Schöpfung. Am häufigsten (und am einfachsten zu verwenden) ist die folgende Erstellungsoption:
Integer a = 3;
Das heißt, die Initialisierung einer Integer-Variablen ähnelt in diesem Fall der Initialisierung einer Int-Variablen. Darüber hinaus kann eine Integer-Variable mit dem Wert einer int-Variablen initialisiert werden:
int i = 5;
Integer x = i;
System.out.println(x); // 5
Im obigen Fall erfolgt das automatische Packen implizit. Wir werden weiter unten mehr darüber sprechen. Zusätzlich zu den oben aufgeführten Initialisierungsoptionen kann eine Integer-Variable wie andere Objekte mithilfe eines Konstruktors und des Schlüsselworts new erstellt werden:
Integer x = new Integer(25);
System.out.println(x);
Allerdings dauert das Schreiben länger und das Lesen länger, daher ist diese Option am seltensten. Mit Integer-Variablen können Sie alles tun, was Sie mit Int-Variablen tun können. Sie können sein:
Falten

Integer a = 6;
Integer b = 2;
Integer c = a + b;
System.out.println(c); // 8
Subtrahieren

Integer a = 6;
Integer b = 2;
Integer c = a - b;
System.out.println(c); // 4
Multiplizieren

Integer a = 6;
Integer b = 2;
Integer c = a * b;
System.out.println(c); // 12
Teilen

Integer a = 6;
Integer b = 2;
Integer c = a / b;
System.out.println(c); // 3
Zuwachs

Integer a = 6;
a++;
++a;
System.out.println(a); // 8
Dekrementieren

Integer a = 6;
a--;
--a;
System.out.println(a); // 4
Bei alledem müssen Sie jedoch vorsichtig sein und bedenken, dass Integer ein Referenzdatentyp ist und eine Variable dieses Typs null sein kann. In diesem Fall (wenn die Variable null ist) ist es besser, auf arithmetische Operationen (und alle anderen, bei denen null kein gutes Zeichen ist) zu verzichten. Hier ist ein Beispiel:
Integer a = null;
Integer b = a + 1; // Здесь мы упадем с "Exception in thread "main" java.lang.NullPointerException"
System.out.println(b);
Die meisten Vergleichsoperationen werden auf die gleiche Weise wie beim primitiven Typ int durchgeführt:
Integer a = 1;
Integer b = 2;

System.out.println(a > b);
System.out.println(a >= b);
System.out.println(a < b);
System.out.println(a <= b);
Ausgabe:

false
false
true
true
Hervorzuheben ist der Vorgang des Vergleichs zweier Integer-Variablen. Und der Punkt hier ist, dass Integer ein Referenzdatentyp ist und seine Variablen Referenzen auf Werte speichern und nicht auf die Werte selbst (Objekte). Manifestationen dieser Tatsache können bei der Ausführung des folgenden Codefragments beobachtet werden:
Integer a = 1;
Integer b = 1;
Integer c = new Integer(1);

System.out.println(a == b); // true
System.out.println(a == c); // false
Das Ergebnis der ersten Gleichheit wird wahr sein und das zweite wird falsch sein. Dies geschieht, weil wir im ersten Fall zwei Variablen („a“ und „b“) vergleichen, die Verweise auf dasselbe Objekt speichern. Und im zweiten Fall vergleichen wir zwei Variablen, die auf zwei verschiedene Objekte verweisen (bei der Erstellung der Variablen „c“ haben wir ein neues Objekt erstellt). Lassen Sie uns ein weiteres interessantes Beispiel geben:
Integer a = 1;
Integer b = 1;

Integer x = 2020;
Integer y = 2020;

System.out.println(a == b); // true
System.out.println(x == y); // false
Wie wir sehen können, ist das Ergebnis des ersten Vergleichs wahr und das Ergebnis des zweiten falsch. Es dreht sich alles um Caching. Alle Ganzzahlen im Bereich von -128 bis einschließlich 127 (diese Werte können angepasst werden) werden zwischengespeichert. Wenn wir also eine neue Variable erstellen und ihr einen ganzzahligen Wert zwischen -128 und 127 zuweisen, erstellen wir kein neues Objekt, sondern weisen der Variablen vielmehr eine Referenz auf ein bereits erstelltes Objekt im Cache zu. Angesichts dieser Tatsache erscheint das obige Beispiel nicht mehr so ​​mystisch. Die Variablen a und b verweisen auf dasselbe Objekt – ein Objekt aus dem Cache. Und während der Initialisierung der Variablen x und y haben wir jedes Mal ein neues Objekt erstellt und diese Variablen haben Referenzen auf verschiedene Objekte gespeichert. Und wie Sie wissen, vergleicht der ==-Operator die Werte von Variablen und die Werte von Referenzvariablen sind Referenzen. Um die Gleichheit zwischen zwei Integer-Variablen genau zu prüfen, müssen Sie (egal wie trivial es klingen mag) die Methode „equals“ verwenden. Schreiben wir das obige Beispiel um:
Integer a = 1;
Integer b = 1;

Integer x = 2020;
Integer y = 2020;

System.out.println(a.equals(b)); // true
System.out.println(x.equals(y)); // true

Automatisches Packen und Entpacken von Integer

Was ist automatisches Ein- und Auspacken? Beim Erstellen neuer Integer-Variablen haben wir die folgende Konstruktion verwendet:
Integer a = 2020;
Auf diese Weise haben wir ein neues Objekt erstellt, ohne den neuen Schlüsseloperator zu verwenden. Dies ist dank des Autopacking-Mechanismus des primitiven Typs int möglich. Der umgekehrte Vorgang erfolgt, wenn eine primitive int-Variable dem Wert einer Integer-Referenzvariablen zugewiesen wird:
Integer a = 2020;
int x = a;
In diesem Fall scheinen wir einer primitiven Variablen eine Referenz zugewiesen zu haben (nämlich die Referenz auf ein Objekt ist der Wert der Variablen „a“). Tatsächlich wurde jedoch dank des Mechanismus zum automatischen Entpacken der Wert 2020 in die Variable „x“ geschrieben. Das automatische Packen/Entpacken ist in Java ein sehr häufiges Phänomen. Oft passiert es von selbst, manchmal sogar ohne Wissen des Programmierers. Aber Sie müssen noch über dieses Phänomen Bescheid wissen. Wir haben einen interessanten Artikel zu diesem Thema auf Javarush .

Ganzzahlige Klassenkonstanten

Die Integer-Klasse stellt verschiedene Konstanten und Methoden für die Arbeit mit Ganzzahlen bereit. In diesem Abschnitt werden wir einige davon in der Praxis näher betrachten. Beginnen wir mit den Konstanten. Die folgende Tabelle zeigt alle Klassenkonstanten:
Costanta Beschreibung
GRÖSSE Die Anzahl der Bits im zweistelligen Zahlensystem, die vom Typ int belegt werden
BYTES Die Anzahl der Bytes im zweistelligen Zahlensystem, die vom Typ int belegt sind
MAX_VALUE Der maximale Wert, den ein int-Typ enthalten kann
MIN_VALUE Der Mindestwert, den ein int-Typ enthalten kann
TYP Gibt ein Objekt vom Typ Class vom Typ int zurück
Schauen wir uns die Werte all dieser Konstanten an, indem wir den folgenden Code ausführen:
public static void main(String[] args) {
        System.out.println(Integer.SIZE);
        System.out.println(Integer.BYTES);
        System.out.println(Integer.MAX_VALUE);
        System.out.println(Integer.MIN_VALUE);
        System.out.println(Integer.TYPE);
}
Als Ergebnis erhalten wir die folgende Ausgabe:

32
4
2147483647
-2147483648
int

Methoden der Integer-Klasse

Werfen wir nun einen kurzen Blick auf die am häufigsten verwendeten Methoden der Integer-Klasse. An der Spitze stehen also Methoden zum Konvertieren einer Zahl aus einer Zeichenfolge oder zum Konvertieren einer Zeichenfolge aus einer Zahl. Beginnen wir mit der Konvertierung einer Zeichenfolge in eine Zahl. Für diese Zwecke wird die Methode parseInt verwendet , die Signatur ist unten:
  • 
    static int parseInt(String s)
Diese Methode konvertiert String in int. Lassen Sie uns demonstrieren, wie diese Methode funktioniert:
int i = Integer.parseInt("10");
System.out.println(i); // 10
Wenn die Konvertierung nicht möglich ist – wir haben beispielsweise ein Wort an die parseInt-Methode übergeben – wird eine NumberFormatException ausgelöst. Die parseInt(String s)-Methode hat ein überladenes Geschwister:
  • 
    static int parseInt(String s, int radix)
Diese Methode wandelt den Parameter s in int um. Der Parameter radix gibt an, in welchem ​​Zahlensystem die Zahl in s ursprünglich geschrieben wurde, was in int umgewandelt werden muss. Beispiele unten:
System.out.println(Integer.parseInt("0011", 2)); // 3
System.out.println(Integer.parseInt("10", 8));   // 8
System.out.println(Integer.parseInt("F", 16));   // 15
Die parseInt-Methoden geben einen primitiven Datentyp int zurück. Diese Methoden haben ein Analogon – die valueOf -Methode . Einige Variationen dieser Methode rufen parseInt einfach intern auf. Der Unterschied zu parseInt besteht darin, dass das Ergebnis von valueOf eine Ganzzahl und kein Int ist. Betrachten wir im Folgenden alle Optionen für diese Methode und ein Beispiel für ihre Funktionsweise:
  • static Integer valueOf(int i) – gibt eine Ganzzahl zurück, deren Wert i ist;
  • static Integer valueOf(String s) – ähnlich wie parseInt(String s), aber das Ergebnis ist Integer;
  • static Integer valueOf(String s, int radix) – ähnlich wie parseInt(String s, int radix), aber das Ergebnis ist Integer.
Beispiele:
int a = 5;
Integer x = Integer.valueOf(a);
Integer y = Integer.valueOf("20");
Integer z = Integer.valueOf("20", 8);

System.out.println(x); // 5
System.out.println(y); // 20
System.out.println(z); // 16
Wir haben uns Methoden angesehen, mit denen Sie String in int/Integer konvertieren können. Der umgekehrte Vorgang wird mit den toString -Methoden erreicht . Sie können die toString-Methode für jedes Integer-Objekt aufrufen und dessen String-Darstellung abrufen:
Integer x = 5;
System.out.println(x.toString()); // 5
Aufgrund der Tatsache, dass die toString-Methode häufig implizit für Objekte aufgerufen wird (z. B. wenn ein Objekt zum Drucken an die Konsole gesendet wird), wird diese Methode von Entwicklern jedoch selten explizit verwendet. Es gibt auch eine statische Methode toString, die einen int-Parameter entgegennimmt und ihn in eine String-Darstellung umwandelt. Zum Beispiel:
System.out.println(Integer.toString(5)); // 5
Allerdings ist die explizite Verwendung einer statischen Methode wie bei der nicht statischen toString-Methode selten. Interessanter ist die statische Methode toString, die zwei ganzzahlige Parameter akzeptiert:
  • static String toString(int i, int radix) – konvertiert i in eine String-Darstellung im Basiszahlensystem.
Beispiel:
System.out.println(Integer.toString(5, 2)); // 101
Die Integer-Klasse verfügt über mehrere Methoden zum Ermitteln des Maximums/Minimums zweier Zahlen:
  • static int max(int ​​​​a, int b) gibt den größten Wert unter den übergebenen Variablen zurück;
  • static int min(int a, int b) gibt den kleinsten Wert unter den übergebenen Variablen zurück.
Beispiele:
int x = 4;
int y = 40;

System.out.println(Integer.max(x,y)); // 40
System.out.println(Integer.min(x,y)); // 4

Abschluss

In diesem Artikel haben wir uns die Integer-Klasse angesehen. Wir haben darüber gesprochen, was für eine Klasse das ist und was Wrapper-Klassen sind. Wir haben den Kurs aus praktischer Sicht betrachtet. Wir haben uns Beispiele für arithmetische Operationen angesehen, einschließlich Vergleichsoperationen. Wir haben einen Blick auf die Feinheiten des Vergleichs zweier Integer-Variablen geworfen und das Konzept zwischengespeicherter Objekte untersucht. Wir haben auch das Phänomen des automatischen Packens/Entpackens primitiver Datentypen erwähnt. Darüber hinaus konnten wir uns einige Methoden der Integer-Klasse sowie einige Konstanten ansehen. Sie gaben Beispiele für die Umrechnung von Zahlen von einem Zahlensystem in ein anderes.

Hausaufgaben

  1. Studieren Sie, welche anderen Methoden der Integer-Klasse es gibt (Sie können sie auf der Website mit der offiziellen Dokumentation studieren ), schreiben Sie in die Kommentare, welche der von Ihnen untersuchten Methoden (mit Ausnahme der im Artikel angegebenen) Ihrer Meinung nach am nützlichsten ist ( wird von Ihnen am häufigsten verwendet). Und begründen Sie auch Ihre Meinung.

    PS: Hier gibt es keine richtigen Antworten, aber diese Aktivität wird Ihnen helfen, den Kurs besser zu verstehen.

  2. Lösen Sie eine kleine einfache Aufgabe, um das Material zu festigen.

    Wir haben zwei Zahlen:

    1100001001 – im binären Zahlensystem
    33332 – im quinären Zahlensystem

    Es ist notwendig, ausschließlich Methoden der Integer-Klasse zu verwenden, um das Maximum zwischen zwei gegebenen Zahlen zu bestimmen und dann die Differenz zwischen dem Maximal- und Minimalwert im ternären Zahlensystem anzuzeigen.

  3. Konvertieren Sie den maximal möglichen Ganzzahlwert in das oktale Zahlensystem und zeigen Sie die Anzahl der Ziffern in der resultierenden Zahl an (zählen Sie die Zahl programmgesteuert).

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION