BigInteger类
- 一、前言
- 二、概述
- 1.API帮助文档
- 2.使用方法
- 三、常见方法
- 1.构造方法
- 1️⃣格式
- 2️⃣实例
- 2.成员方法
- 1️⃣格式
- 2️⃣实例
- 四、注意事项
- 五、结语
一、前言
平时在存储整数的时候,Java中默认是int类型,int类型有取值范围:-2147483648 ~ 2147483647。如果数字过大,我们可以使用long类型,但是如果long类型也表示不下的时候就需要用到BigInteger类来解决
二、概述
1.API帮助文档
BigInteger所在包是在java.math包下,因此在使用的时候就需要进行导包。我们可以使用BigInteger类进行大整数的计算
2.使用方法
导包后才能使用
三、常见方法
1.构造方法
1️⃣格式
构造方法这里列举出来三个比较常用的方法,并在下面给出实例以及输出结果便于理解,建议各位小伙伴还是自己敲一遍代码加深印象
public BigInteger(int num, Random rnd) //获取随机大整数,范围:[0 ~ 2的num次方-1]
public BigInteger(String val) //获取指定的大整数
public BigInteger(String val, int radix) //获取指定进制的大整数
2️⃣实例
import java.math.BigInteger;
import java.util.Random;
public class TestBigInteger {
public static void main(String[] args) {
//获取随机大整数
Random r=new Random();
for (int i = 0; i < 5; i++) {
BigInteger bd1 = new BigInteger(4,r);
System.out.println(bd1);
}
System.out.println("----------此处为分割线----------");
//获取指定的大整数
BigInteger bd2 = new BigInteger("345678998345623567256780435093457001561080748");
System.out.println(bd2);
System.out.println("----------此处为分割线----------");
//获取指定进制的大整数
BigInteger bd3 = new BigInteger("1101010110",2);
System.out.println(bd3);
}
}
输出结果
14
13
5
7
10
11
3
11
2
11
----------此处为分割线----------
345678998345623567256780435093457001561080748
----------此处为分割线----------
854
2.成员方法
1️⃣格式
public BigInteger add(BigInteger val) //加法
public BigInteger subtract(BigInteger val) //减法
public BigInteger multiply(BigInteger val) //乘法
public BigInteger divide(BigInteger val) //除法
public BigInteger[] divideAndRemainder(BigInteger val) //除法,获取商和余数
public boolean equals(Object x) //比较是否相同
public BigInteger pow(int exponent) //次幂、次方
public BigInteger max/min(BigInteger val) //返回较大值/较小值
public int intValue(BigInteger val) //转为int类型整数,超出范围数据有误
2️⃣实例
import java.math.BigInteger;
import java.util.Random;
public class TestBigInteger {
public static void main(String[] args) {
BigInteger bd1 = BigInteger.valueOf(10);
BigInteger bd2 = BigInteger.valueOf(5);
//2.加法
BigInteger bd3 = bd1.add(bd2);
System.out.println(bd3);
//3.除法,获取商和余数
BigInteger[] arr = bd1.divideAndRemainder(bd2);
System.out.println(arr[0]);
System.out.println(arr[1]);
//4.比较是否相同
boolean result = bd1.equals(bd2);
System.out.println(result);
//5.次幂
BigInteger bd4 = bd1.pow(2);
System.out.println(bd4);
//6.max
BigInteger bd5 = bd1.max(bd2);
BigInteger bd6 = BigInteger.valueOf(200);
double v = bd6.doubleValue();
System.out.println(v);//200.0
}
}
输出结果
15
2
0
false
100
200.0
四、注意事项
-
如果BigInteger表示的数字没有超出long的范围,可以用静态方法获取
-
如果BigInteger表示的超出long的范围,可以用构造方法获取
-
对象一旦创建,BigInteger内部记录的值不能发生改变
-
只要进行计算都会产生一个新的BigInteger对象
五、结语
接下来会讲述BigDecimal类