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:- big2.subtract(big1) 20 kivonása 60-ból.
- big1.add(big2) 20 és 60 hozzáadásához.
- big1.multiply(big2) 20 és 60 szorzásához.
- big2.divide(big1) a 60-at 20-zal osztja.
- big1.min(big2), hogy a két érték közül a kisebbet kapjuk.
- big1.max(big2), hogy a két érték közül a nagyobbat kapjuk.
GO TO FULL VERSION