BigInteger para números enormes
Enteros de precisión arbitraria
BigInteger para números enormes es una lección gratuita de Java Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Java Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Java Academy incluye 4 lecciones en total.
Más allá de long
El primitivo long puede contener valores de hasta unos 9,2 trillones. Cuando necesita enteros mayores, Java ofrece BigInteger del paquete java.math, que no tiene un límite superior fijo.
Cuando long se desborda
Superar Long.MAX_VALUE hace que el valor se desborde silenciosamente y pase a ser un número negativo. Esta corrupción es una fuente clásica de errores.
public class Main {
public static void main(String[] args) {
long max = Long.MAX_VALUE;
System.out.println(max);
System.out.println(max + 1);
}
}Crear un BigInteger
Cree un BigInteger a partir de una cadena de dígitos. No hay un límite de longitud, por lo que puede escribir números mucho mayores que cualquier primitivo.
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
BigInteger huge = new BigInteger("123456789012345678901234567890");
System.out.println(huge);
}
}Desde un long con valueOf
Si el valor inicial cabe en un long, BigInteger.valueOf es un método de fábrica práctico.
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
BigInteger n = BigInteger.valueOf(1000000);
System.out.println(n);
}
}Aritmética inmutable
Al igual que BigDecimal, BigInteger es inmutable. add, subtract y multiply devuelven objetos nuevos que debe guardar.
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));
}
}Multiplicar números grandes
Las multiplicaciones que provocarían un desbordamiento de long funcionan correctamente 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));
}
}Calcular un factorial
Los factoriales crecen rápidamente. Incluso el factorial de 30 desborda un long, pero BigInteger lo gestiona fácilmente.
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);
}
}Potencia y módulo
pow eleva un valor a un exponente entero y mod devuelve el resto. Ambos son habituales en criptografía.
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)));
}
}Comparar valores
Use compareTo para ordenar dos valores BigInteger. Devuelve un número negativo, cero o un número 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));
}
}Constantes prácticas
BigInteger proporciona ZERO, ONE, TWO y TEN. Úselas como acumuladores iniciales o en bucles.
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);
}
}Cuándo recurrir a él
Use BigInteger para factoriales, contadores muy grandes, claves criptográficas y cualquier caso en que el resultado pueda superar long. Para contar normalmente, use tipos primitivos, ya que son mucho más rápidos.
Comprobación rápida
Compruebe su comprensión de BigInteger.
Resumen
Ha aprendido a usar BigInteger:
longse desborda silenciosamente, peroBigIntegerno tiene un límite fijo- Créelo a partir de una cadena o con
valueOf - Es inmutable, por lo que debe guardar el resultado de cada operación
add,multiply,powymodcubren las operaciones matemáticas habituales- Úselo para factoriales, criptografía y cualquier valor mayor que
long
Preguntas frecuentes
¿La lección «BigInteger para números enormes» es gratis?
Sí — el texto completo de «BigInteger para números enormes» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Java Academy, actualiza a CoddyKit PRO. El curso de Java Academy incluye 4 lecciones en total.
¿Qué aprenderé en «BigInteger para números enormes»?
Enteros de precisión arbitraria Practicas Java Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Java Academy?
No se requiere experiencia previa. Java Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «BigInteger para números enormes»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Java Academy?
Sí. Cada lección de Java Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Por qué no usar double para dinero
- Uso de BigDecimal
- Redondeo y escala
- BigInteger para números enormes