BigInteger för mycket stora tal
Heltal med godtycklig precision
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:
longfår tyst overflow, menBigIntegerhar 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,powochmodtäcker vanlig matematik- Använd det för fakulteter, kryptografi och alla värden som är större än
long
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
- Varför inte double för pengar
- Arbeta med BigDecimal
- Avrundning och skala
- BigInteger för mycket stora tal