0Pricing
Java Academy · Lezione

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:

  • long va silenziosamente in overflow, mentre BigInteger non ha un limite fisso
  • Lo crei da una stringa o con valueOf
  • È immutabile, quindi memorizzi il risultato di ogni operazione
  • add, multiply, pow e mod coprono 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

  1. Perché non utilizzare double per il denaro
  2. Utilizzare BigDecimal
  3. Arrotondamento e scala
  4. BigInteger per numeri enormi
← Torna a Java Academy