BigInteger per numeri enormi
Interi a precisione arbitraria
BigInteger per numeri enormi è una lezione Java Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Java Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Java Academy include 4 lezioni in totale.
Oltre long
Il primitivo long può contenere valori fino a circa 9,2 quintilioni. Quando servono interi più grandi, Java offre BigInteger del package java.math, che non ha un limite superiore fisso.
Quando long va in overflow
Superare Long.MAX_VALUE fa eseguire silenziosamente un wrap-around fino a un numero negativo. Questa corruzione dei dati è una fonte classica di bug.
public class Main {
public static void main(String[] args) {
long max = Long.MAX_VALUE;
System.out.println(max);
System.out.println(max + 1);
}
}Creare un BigInteger
Crei un BigInteger a partire da una stringa di cifre. Non c'è alcun limite di lunghezza, quindi può scrivere numeri molto più grandi di qualsiasi primitivo.
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
BigInteger huge = new BigInteger("123456789012345678901234567890");
System.out.println(huge);
}
}Da un long con valueOf
Se il valore iniziale rientra in un long, BigInteger.valueOf è un comodo metodo factory.
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
BigInteger n = BigInteger.valueOf(1000000);
System.out.println(n);
}
}Aritmetica immutabile
Come BigDecimal, anche BigInteger è immutabile. add, subtract e multiply restituiscono nuovi oggetti che deve memorizzare.
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
BigInteger a = new BigInteger("99999999999999999999");
BigInteger b = BigInteger.valueOf(1);
System.out.println(a.add(b));
}
}Moltiplicare numeri grandi
Una moltiplicazione che causerebbe un overflow di un long funziona correttamente con BigInteger.
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
BigInteger a = new BigInteger("10000000000");
BigInteger b = new BigInteger("10000000000");
System.out.println(a.multiply(b));
}
}Calcolare un fattoriale
I fattoriali crescono in modo esponenziale. Persino 30 fattoriale causa un overflow di un long, ma BigInteger lo gestisce facilmente.
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
BigInteger result = BigInteger.ONE;
for (int i = 1; i <= 30; i++) {
result = result.multiply(BigInteger.valueOf(i));
}
System.out.println(result);
}
}Potenza e modulo
pow eleva un valore a un esponente intero e mod restituisce il resto. Entrambi sono comuni nella crittografia.
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
BigInteger base = BigInteger.valueOf(2);
System.out.println(base.pow(64));
System.out.println(base.pow(10).mod(BigInteger.valueOf(7)));
}
}Confrontare i valori
Utilizzi compareTo per ordinare due valori BigInteger. Restituisce un numero negativo, zero o un numero positivo.
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
BigInteger a = new BigInteger("500");
BigInteger b = new BigInteger("1000");
System.out.println(a.compareTo(b));
}
}Costanti utili
BigInteger fornisce ZERO, ONE, TWO e TEN. Le utilizzi come accumulatori iniziali o nei cicli.
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
BigInteger sum = BigInteger.ZERO;
sum = sum.add(BigInteger.TEN).add(BigInteger.ONE);
System.out.println(sum);
}
}Quando utilizzarlo
Utilizzi BigInteger per fattoriali, contatori molto grandi, chiavi crittografiche e in qualsiasi situazione in cui il risultato potrebbe superare long. Per il conteggio ordinario, si attenga ai primitivi, che sono molto più veloci.
Verifica rapida
Verifichi la sua comprensione di BigInteger.
Riepilogo
Ha imparato a usare BigInteger:
longva silenziosamente in overflow, mentreBigIntegernon ha un limite fisso- Lo crei da una stringa o con
valueOf - È immutabile, quindi memorizzi il risultato di ogni operazione
add,multiply,powemodcoprono i calcoli più comuni- Lo utilizzi per fattoriali, crittografia e qualsiasi valore più grande di
long
Domande Frequenti
La lezione «BigInteger per numeri enormi» è gratuita?
Sì — il testo completo di «BigInteger per numeri enormi» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Java Academy, passa a CoddyKit PRO. Il corso Java Academy include 4 lezioni in totale.
Cosa imparerò in «BigInteger per numeri enormi»?
Interi a precisione arbitraria Eserciti Java Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Java Academy?
Non è richiesta alcuna esperienza precedente. Java Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «BigInteger per numeri enormi»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Java Academy?
Sì. Ogni lezione Java Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Perché non utilizzare double per il denaro
- Utilizzare BigDecimal
- Arrotondamento e scala
- BigInteger per numeri enormi