Java BigInteger类的用法(附带实例)
在 Java 中,BigInteger 类的数字范围较 Integer 类的数字范围要大得多。
我们知道,Integer 类是 int 的包装类,int 的最大值为 2^31-1,如果要计算更大的数字,使用 Integer 类就无法实现了,因此 Java 提供了 BigInteger 类来处理更大的数字。BigInteger 类支持任意精度的整数,也就是说,在运算中 BigInteger 类可以准确地表示任何大小的整数值而不会丢失信息。
在 BigInteger 类中封装了多种操作,除了基本的加、减、乘、除操作,还提供了绝对值、相反数、最大公约数以及判断是否为质数等操作。
使用 BigInteger 类,可以实例化一个 BigInteger 对象,并自动调用相应的构造函数。BigInteger 类具有很多构造函数,但最直接的一种方式是参数以字符串形式代表要处理的数字。
例如,将 2 转换为 BigInteger 类型,可以使用以下语句进行初始化操作:
一旦创建了对象实例,就可以调用 BigInteger 类中的一些方法进行运算操作,包括基本的数学运算和位运算以及一些取相反数、取绝对值等操作。
下面列举了 BigInteger 类中常用的几种运算方法:
【实例】使用 BigInteger 类进行数学运算。在项目中创建 BigIntegerDemo 类,然后在类的主方法中创建两个 BigInteger 类对象,再对两个对象进行加、减、乘、除和其他运算,最后输出运算结果。
我们知道,Integer 类是 int 的包装类,int 的最大值为 2^31-1,如果要计算更大的数字,使用 Integer 类就无法实现了,因此 Java 提供了 BigInteger 类来处理更大的数字。BigInteger 类支持任意精度的整数,也就是说,在运算中 BigInteger 类可以准确地表示任何大小的整数值而不会丢失信息。
在 BigInteger 类中封装了多种操作,除了基本的加、减、乘、除操作,还提供了绝对值、相反数、最大公约数以及判断是否为质数等操作。
使用 BigInteger 类,可以实例化一个 BigInteger 对象,并自动调用相应的构造函数。BigInteger 类具有很多构造函数,但最直接的一种方式是参数以字符串形式代表要处理的数字。
例如,将 2 转换为 BigInteger 类型,可以使用以下语句进行初始化操作:
BigInteger twoInstance = new BigInteger("2");注意,参数 2 的双引号不能省略,因为参数是以字符串的形式存在的。
一旦创建了对象实例,就可以调用 BigInteger 类中的一些方法进行运算操作,包括基本的数学运算和位运算以及一些取相反数、取绝对值等操作。
下面列举了 BigInteger 类中常用的几种运算方法:
方法 | 功能描述 |
---|---|
public BigInteger add(BigInteger val) | 做加法运算。 |
public BigInteger subtract(BigInteger val) | 做减法运算。 |
public BigInteger multiply(BigInteger val) | 做乘法运算。 |
public BigInteger divide(BigInteger val) | 做除法运算。 |
public BigInteger remainder(BigInteger val) | 做取余操作。 |
public BigInteger[] divideAndRemainder(BigInteger val) | 用数组返回余数和商,结果数组中第一个值为商,第二个值为余数。 |
public BigInteger pow(int exponent) | 进行取参数的exponent次方操作。 |
public BigInteger negate() | 取相反数。 |
public BigInteger shiftLeft(int n) | 将数字左移n位,如果n为负数,做右移操作。 |
public BigInteger shiftRight(int n) | 将数字右移n位,如果n为负数,做左移操作。 |
public BigInteger and(BigInteger val) | 做与操作。 |
public BigInteger or(BigInteger val) | 做或操作。 |
public int compareTo(BigInteger val) | 做数字比较操作。 |
public boolean equals(Object x) | 当参数x是BigInteger类型的数字并且数值与对象实例的数值相等时,返回true。 |
public BigInteger min(BigInteger val) | 返回较小的数值。 |
public BigInteger max(BigInteger val) | 返回较大的数值。 |
【实例】使用 BigInteger 类进行数学运算。在项目中创建 BigIntegerDemo 类,然后在类的主方法中创建两个 BigInteger 类对象,再对两个对象进行加、减、乘、除和其他运算,最后输出运算结果。
import java.math.BigInteger; public class BigIntegerDemo { public static void main(String[] args) { BigInteger b1 = new BigInteger("987654321987654321"); // 第 1 个大数字 BigInteger b2 = new BigInteger("123456789123456789"); // 第 2 个大数字 System.out.println("加法操作:" + b1.add(b2)); // 加法运算 System.out.println("减法操作:" + b1.subtract(b2)); // 减法运算 System.out.println("乘法操作:" + b1.multiply(b2)); // 乘法运算 System.out.println("除法操作:" + b1.divide(b2)); // 除法运算 System.out.println("取商:" + b1.divideAndRemainder(b2)[0]); // 取商运算 System.out.println("取余数:" + b1.divideAndRemainder(b2)[1]); // 取余运算 System.out.println("做 2 次方操作:" + b1.pow(2)); // 2 次方运算 System.out.println("取相反数操作:" + b1.negate()); // 相反数运算 } }运行结果如下:
加法操作:1111111111111111110
减法操作:864197532864197532
乘法操作:121932631356500531347203169112635269
除法操作:8
取商:8
取余数:9000000009
做2次方操作:975461059740893157555403139789971041
取相反数操作:-987654321987654321