Umgang mit ganzzahligem Überlauf und Unterlauf in Java

MD Aminul Islam 12 Oktober 2023
  1. Überblick über Integer-Überlauf und -Unterlauf in Java
  2. Ganzzahlüberlauf in Java
  3. Integer-Unterlauf in Java
Umgang mit ganzzahligem Überlauf und 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.

MD Aminul Islam avatar MD Aminul Islam avatar

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.

LinkedIn

Verwandter Artikel - Java Error

Verwandter Artikel - Java Integer