Umgang mit ganzzahligem Überlauf und Unterlauf in Java
- Überblick über Integer-Überlauf und -Unterlauf in Java
- Ganzzahlüberlauf in Java
- Integer-Unterlauf in Java
Dieser Artikel beschreibt den Überlauf und Unterlauf eines ganzzahligen Datentyps und die Behandlung dieses Problems.
Überblick über Integer-Überlauf und -Unterlauf in Java
Wenn Sie mit ganzzahligen Werten arbeiten, kann es zu einem Überlauf- oder Unterlauffehler kommen. Es passiert, wenn wir eine Variable falsch deklarieren, z. B. einen Wert zuweisen, der außerhalb des Bereichs für den deklarierten Datentyp liegt.
Wie wir wissen, gibt es vier Ebenen von Integer-Datentypen mit unterschiedlichen Größen, die unten angegeben sind:
Datentyp | Größe |
---|---|
byte |
8 Bit |
short |
16 Bit |
int |
32-Bit |
long |
64-Bit |
Wenn wir das int
in Java betrachten, hat es eine Reihe von Werten, die wir zuweisen können. Wie wir bereits wissen, hat der Datentyp int
eine Größe von 32-bits
. Der Bereich der akzeptierten Werte in int
liegt also zwischen -2147483648
und 2147483647
.
Sie können den maximalen und minimalen Wert schnell erhalten, indem Sie Integer.MAX_VALUE
und Integer.MIN_VALUE
verwenden.
Ganzzahlüberlauf in Java
Hier sehen wir das Auftreten eines Integer-Überlaufs und seine Handhabung.
Auftreten eines Integer-Überlaufs
Beispielcode:
public class IntegerOverflow {
public static void main(String[] args) {
int Intvalue = Integer.MAX_VALUE - 1;
for (int i = 0; i < 4; i++) {
System.out.println(Intvalue);
Intvalue = Math.addExact(Intvalue, 1);
}
}
}
Wenn Sie nun das obige Programm ausführen, zeigt die Konsole die folgende Ausgabe:
2147483646
2147483647
Exception in thread "main" java.lang.ArithmeticException: integer overflow
at java.base/java.lang.Math.addExact(Math.java:828)at IntegerOverflow.main(IntegerOverflow.java:9)
Ganzzahlüberlauf behandeln
Wir müssen den Wertebereich erhöhen, um unser obiges Beispiel zu lösen. In unserem Fall typisieren wir integer
in long
. Unser aktualisierter Code für das obige Beispiel sieht wie folgt aus.
Beispielcode:
public class IntegerOverflow {
public static void main(String[] args) {
int Intvalue = Integer.MAX_VALUE - 1;
long NewValue = (long) Intvalue; // Upgrading to new type
for (int i = 0; i < 4; i++) {
System.out.println(NewValue);
NewValue = Math.addExact(NewValue, 1);
}
}
}
Jetzt sehen Sie die folgende Ausgabe in Ihrer Konsole.
2147483646
2147483647
2147483648
2147483649
Integer-Unterlauf in Java
In diesem Abschnitt lernen wir den Integer-Unterlauf in Java kennen und wie wir damit umgehen können.
Auftreten eines ganzzahligen Unterlaufs
Beispielcode:
public class IntegerUnderflow {
public static void main(String[] args) {
int value = -2147483699; // Creating underflow intentionally
System.out.println(value - 1);
}
}
Wenn Sie nun das obige Programm ausführen, zeigt die Konsole die folgende Ausgabe:
/IntegerUnderflow.java:3: error: integer number too large
int value = -2147483699; // Creating underflow intentionally
^
1 error
Ganzzahligen Unterlauf behandeln
Um den obigen Fehler zu beheben, müssen wir den Bereich des Werts erneut vergrößern, und dazu können wir den ganzzahligen Wert auf die nächste Ebene umwandeln. Sehen Sie sich den unten geteilten Code an.
Beispielcode:
public class IntegerUnderflow {
public static void main(String[] args) {
long value = (long) -2147483638; // Type Casting
System.out.println(value - 1);
}
}
Jetzt sehen Sie die folgende Ausgabe in Ihrer Konsole.
-2147483639
Daher müssen wir den Bereich auf den Datentyp erweitern, um die Überlauf- oder Unterlaufprobleme zu lösen.
Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.
LinkedInVerwandter Artikel - Java Error
- Adresse wird bereits verwendet JVM_Bind-Fehler in Java
- Android Java.Lang.IllegalStateException behoben: Methode der Aktivität konnte nicht ausgeführt werden
- Ausnahme im Hauptthread Java.Lang.ClassNotFoundException in IntelliJ IDEA
- Ausnahme im Hauptthread Java.Lang.NoClassDefFoundError
- Beheben Sie das Problem, dass Java nicht installiert werden kann. Es gibt Fehler in den folgenden Schaltern
- Beheben Sie den Fehler `Es wurde keine Java Virtual Machine gefunden` in Eclipse