Java Academy · Lektion

BigInteger för mycket stora tal

Heltal med godtycklig precision

Lektion 4 av 413 steg

BigInteger för mycket stora tal är en gratis lektion i Java Academy på CoddyKit. Detta är lektion 4 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Java Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Java Academy innehåller totalt 4 lektioner.

Bortom long

Den primitiva typen long kan lagra värden upp till ungefär 9,2 triljoner. När Ni behöver heltal som är större än så erbjuder Java BigInteger från paketet java.math, utan någon fast övre gräns.

När long får overflow

Om Long.MAX_VALUE överskrids slår värdet tyst runt och blir ett negativt tal. Denna förvanskning är en klassisk felkälla.

public class Main {
    public static void main(String[] args) {
        long max = Long.MAX_VALUE;
        System.out.println(max);
        System.out.println(max + 1);
    }
}

Skapa en BigInteger

Skapa en BigInteger från en sträng med siffror. Det finns ingen längdbegränsning, så Ni kan skriva tal som är mycket större än något primitivt värde.

import java.math.BigInteger;

public class Main {
    public static void main(String[] args) {
        BigInteger huge = new BigInteger("123456789012345678901234567890");
        System.out.println(huge);
    }
}

Från en long med valueOf

Om startvärdet ryms i en long är BigInteger.valueOf en praktisk fabriksmetod.

import java.math.BigInteger;

public class Main {
    public static void main(String[] args) {
        BigInteger n = BigInteger.valueOf(1000000);
        System.out.println(n);
    }
}

Oföränderlig aritmetik

Precis som BigDecimal är BigInteger oföränderlig. add, subtract och multiply returnerar nya objekt som Ni måste spara.

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));
    }
}

Multiplicera stora tal

Multiplikation som skulle orsaka overflow för en long fungerar utan problem med 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));
    }
}

Beräkna en fakultet

Fakulteter växer explosivt. Även 30 fakultet orsakar overflow för en long, men BigInteger hanterar det utan problem.

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);
    }
}

Potens och modulo

pow upphöjer ett värde till en heltalsexponent, och mod ger resten. Båda används ofta inom kryptografi.

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)));
    }
}

Jämför värden

Använd compareTo för att ordna två BigInteger-värden. Metoden returnerar ett negativt tal, noll eller ett positivt tal.

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));
    }
}

Praktiska konstanter

BigInteger tillhandahåller ZERO, ONE, TWO och TEN. Använd dem som startvärden för ackumulatorer eller i loopar.

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);
    }
}

När Ni bör använda det

Använd BigInteger för fakulteter, mycket stora räknare, kryptografiska nycklar och överallt där ett resultat kan överskrida long. För vanlig räkning bör Ni hålla Er till primitiva typer, eftersom de är mycket snabbare.

Snabbtest

Testa Era kunskaper om BigInteger.

Sammanfattning

Ni har lärt Er att använda BigInteger:

  • long får tyst overflow, men BigInteger har ingen fast gräns
  • Skapa det från en sträng eller med valueOf
  • Det är oföränderligt, så spara resultatet av varje operation
  • add, multiply, pow och mod täcker vanlig matematik
  • Använd det för fakulteter, kryptografi och alla värden som är större än long
Gratis att börja

Lär dig Java med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
104
Lektioner
374

Vanliga frågor

Är lektionen ”BigInteger för mycket stora tal” gratis?

Ja – hela texten till ”BigInteger för mycket stora tal” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Java Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Java Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”BigInteger för mycket stora tal”?

Heltal med godtycklig precision Ni övar på Java Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Java Academy?

Du behöver inga förkunskaper. Utbildningen i Java Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.

Hur lång tid tar lektionen ”BigInteger för mycket stora tal”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Java Academy-lektionen?

Ja. Varje Java Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Varför inte double för pengar
  2. Arbeta med BigDecimal
  3. Avrundning och skala
  4. BigInteger för mycket stora tal
← Tillbaka till Java Academy