CodeGym /Java blog /Véletlen /Java BigInteger osztály
John Squirrels
Szint
San Francisco

Java BigInteger osztály

Megjelent a csoportban

Mi az a BigInteger osztály?

A Java-ban van néhány primitív adattípus , például int vagy long, egész számmal végzett műveletek végrehajtására. Néha azonban nagy számokat kell tárolnunk az ilyen primitív adattípusokon kívül. A BigInteger osztályt nagyon nagy számok matematikai számításaira használják. Minden módszert biztosít a java.lang.Math csomagtól és analógoktól a Java összes primitív egész operátoráig. BigIntegerAz osztály magában foglalja a moduláris aritmetika, a bitmanipuláció, a GCD-számítás és néhány egyéb művelet műveleteit. A BigIntegerek kettõs kiegészítõ jelöléssel vannak ábrázolva. Nincs elméleti korlátja annak, hogy mekkora számot lehet tárolni, mivel a memória dinamikusan allokálódik. A memória azonban gyakorlatilag korlátozott, és olyan egész számot tárolhatunk, amelynek bitszáma kisebb vagy egyenlő, mint az Integer.MAX_VALUE . Ez kellően nagy felső határt biztosít ahhoz, hogy gyakorlatilag szinte minden nagy szám tárolható.

Hogyan valósul meg a BigInteger osztály?


import java.math.BigInteger;
A BigInteger osztály megvalósításához a kódban importálnia kell a java.math.BigInteger csomagot.

BigInteger osztálynyilatkozat

A Java BigInteger osztálya a következő módon van deklarálva a java.math csomagban:

public class BigInteger
   extends Number
      implements Comparable<BigInteger>
A BigInteger osztály kiterjeszti a Number osztályt, és egy összehasonlítható felületet valósít meg. A java.math csomagban van deklarálva és definiálva .

Osztályépítők

A Java BigInteger osztályában sok túlterhelt konstruktor van. Megpróbálhatja mindegyiket futtatni a szerkesztőben, hogy megnézze, hogyan működnek.
Sr# Konstruktőr Leírás
1 BigInteger(byte[] érték) Egy bájttömböt fordít le BigIntegerre .
2 BigInteger(int signum, byte[] magnitúdó) Lefordítja az előjel-nagyságábrázolást BigInteger -re .
3 BigInteger(int bithossz, int bizonyosság, véletlenszerű rnd) Véletlenszerűen generált pozitív BigInteger-t hoz létre a megadott hosszúsággal.
4 BigInteger (karakterlánc érték) A decimális karakterlánc-ábrázolást BigIntegerre fordítja .
5 BigInteger (karakterlánc érték, int gyök) A megadott gyökben lévő karakterlánc- ábrázolást BigInteger -vé alakítja .

Osztály módszerek

A Java BigInteger osztályának számos metódusa van, amelyek közül néhányat az alábbiakban ismertetünk. A táblázatban a „this” a metódust meghívó BigInteger , a „ val ” pedig a metódusnak átadott argumentum.
abs() Ez a BigInteger abszolút értékét adja vissza .
add() Egy Bigintegert ad vissza a ' this + val ' kiszámításával .
kivon() Egy Bigintegert ad vissza a ' this - val ' kiszámításával .
feloszt() Egy Bigintegert ad vissza a ' this / val ' kiszámításával .
szorzás() Nagy egész számot ad vissza a ' this * val ' kiszámításával .
értéke() Adott long BigInteger értéket ad vissza .
egyenlő () Összehasonlítja az egyenlőséget ' ez a ' BigInteger és egy adott objektum között.
hadifogoly() Nagy egész számot ad vissza a ' thisexponens ' kiszámításával .
min() Ez a BigInteger és a megadott érték közötti minimumot adja vissza .
max() Ez a BigInteger és a megadott érték közötti maximumot adja vissza .
mod() Egy értéket ad vissza a ' this mod m ' számára.
gcd() Egy BigInteger-t ad vissza , amely a legnagyobb közös osztó az „ ez ” abszolút értéke és az „ átadott érték ” között.
bitCount() A bitek számát adja vissza a ' this ' BigInteger kettős-komplementum reprezentációjában .
bitLength() Visszaadja a bitek számát, az előjelbitet nem számítva, a ' this ' BigInteger minimális kettős komplementer reprezentációjában .
és() Nagy egész számot ad vissza a ' this & val ' kiszámításával .
vagy() Nagy egész számot ad vissza a ' this | val '.
nem() Egy Bigintegert ad vissza a ' ~this' kiszámításával .
és nem() Nagy egész számot ad vissza a ' this & ~val ' kiszámításával .
intValue() A BigInteger-t int -vé alakítja .
floatValue() A BigIntegert lebegővé alakítja .
longValue() A BigIntegert hosszúvá alakítja .
doubleValue() A BigInteger számot duplává alakítja .
toString() A BigInteger decimális karakterlánc reprezentációját adja vissza .

1. példa


import java.math.BigInteger;
public class Example1 {
    static BigInteger calculateFactorial(int val) {
        // Initialize result
        BigInteger f = BigInteger.ONE; // Or new BigInteger("1")
        // compute factorial
        for (int i = 2; i <= val; i++) {
            f = f.multiply(BigInteger.valueOf(i));
        }

        return f;
    }

    // Driver method
    public static void main(String[] args) {
        int val = 25;
        System.out.println(calculateFactorial(val));
    }
}

Kimenet

15511210043330985984000000

Magyarázat

A fenti részletben a nagy szám tényezőjét a BigInteger osztály segítségével számítja ki a program a java.math.BigInteger csomag importálásával . Létrehoztunk egy számítási faktoros módszert. Ez a metódus létrehoz egy BigIntegert , majd az f.multiply(BigInteger.valueOf(i)) szorzási módszerrel kiszámítja a faktoriálist .

2. példa


import java.math.BigInteger;
public class Example2 {

    public static void main(String[] args) {
        BigInteger big1 = new BigInteger("20");
        BigInteger big2 = new BigInteger("60");
        BigInteger sub = big2.subtract(big1);
        System.out.println(big2 + " - " + big1 + " = " + sub);
        BigInteger add = big1.add(big2);
        System.out.println(big1 + " + " + big2 + " = " + add);
        BigInteger mul = big1.multiply(big2);
        System.out.println(big1 + " * " + big2 + " = " + mul);
        BigInteger div = big2.divide(big1);
        System.out.println(big2 + " / " + big1 + " = " + div);
        BigInteger min = big1.min(big2);
        System.out.println("min value: " + min);
        BigInteger max = big1.max(big2);
        System.out.println("max value: " + max);
    }
}

Kimenet

60 - 20 = 40 60 + 20 = 80 60 * 20 = 1200 60 / 20 = 3 perc érték: 20 max. érték: 60

Magyarázat

A fenti részletben két BigIntegert készítettünk a BigInteger(String val) konstruktor segítségével. Különböző módszereket alkalmaztunk a BigInteger s big1 és big2 esetén 20 és 60 értékkel. A következő módszereket alkalmaztuk:
  1. big2.subtract(big1) 20 kivonása 60-ból.
  2. big1.add(big2) 20 és 60 hozzáadásához.
  3. big1.multiply(big2) 20 és 60 szorzásához.
  4. big2.divide(big1) a 60-at 20-zal osztja.
  5. big1.min(big2), hogy a két érték közül a kisebbet kapjuk.
  6. big1.max(big2), hogy a két érték közül a nagyobbat kapjuk.
Fontos megjegyezni, hogy a java.math.BigInteger a kód tetejére kerül importálásra.

Következtetés

Mostanra már ismernie kell a Java BigInteger osztályát. Különböző típusú konstruktorok használatával képesnek kell lennie a BigInteger s használatára a kódban. Különböző aritmetikai és logikai műveletek végrehajtására is képesnek kell lennie rajtuk a BigInteger osztály metódusainak használatával. Kihívásként megpróbálhat különböző metódusokat meghívni a BigInteger s különböző értékeivel. Tovább erősíti a BigInteger s Java-ban való megértését. Ha magabiztosabb akar lenni a tanulásban, próbálja meg újra és újra gyakorolni. A jó kódolás kulcsa a gyakorlat. Sok sikert és jó kódolást!
Hozzászólások
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION