BigInteger

1.有什么用:可以表示大整数,超出Long范围的那种

2.怎么用(构造方法)

//获取随机大整数,0~2的num次方-1,含边界
public BigInterger(int num, Random random)

//获取指定大整数,字符串中必须是整数,否则报错
public BigInterger(String val)

//获取指定进制(radix)的大整数,字符串必须是整数且符合进制要求,否则报错
public BigInterger(String val,int radix)

//静态方法获取BigInteger的对象,-16~16内部有优化,只能表示long范围的值
public BigInterger(long val)

3.有什么特点:对象一旦创建,内部记录的值无法改变

4.有什么常见API方法

//加减乘除
public BigInterger add(BigInteger val)
public BigInterger subtract(BigInteger val)
public BigInterger multiply(BigInteger val)
public BigInterger divide(BigInteger val)
//获取商和余数
public BigInterger[] divideAndRemainder(BigInteger val)
//次幂
public BigInterger pow(int exponent)
//返回较大值或较小值(不会创建新对象)
public BigInterger max/min(BigInteger val)
//转为int类型整数,注意超出范围会报错
public int intValue(BigInteger val)
public int longValue(BigInteger val)

//判断是否相同
public boolean equals(Object x)

5.底层存储方式

final int signum//正负符号,-1表示整数,0表示负数

final int[] mag//具体数值数据,大数拆成几段存储:先转成二进制,再从右往左拆,每段32bit