1、如果BigInteger中的数值没有超过long,用valueof
2、BigInteger中的数值超出了long,用构造方法表示
3、对象一旦创建,BigInteger内部中的值不能发生改变
4、只要计算都会产生一个新的BigInteger对象。
package demo2;
import java.math.BigInteger;
import java.util.Random;
public class BigInterDemo1 {
public static void main(String[] args) {
// public BigInteger(int num, Random rnd) 获取随机大整数,范围:[0 ~ 2 的num次方-1]
// public BigInteger(String val) 获取指定的大整数
// public BigInteger(String val, int radix) 获取指定进制的大整数
// public static BigInteger valueOf(long val) 静态方法获取BigInteger的对象,内部有优化
// 1、获取一个随机的大整数
Random r = new Random();
BigInteger bd1 = new BigInteger(4,r);
System.out.println(bd1); //[0 ~ 2^4 - 1]
// 2.获取一个指定的大整数
// 字符串中必须是整数,否则报错
BigInteger bd2 = new BigInteger("9999999999999999999");
System.out.println(bd2); // 999999999999999999999
// 3.获取指定进制的大整数
BigInteger bd3 = new BigInteger("100", 10);
System.out.println(bd3); // 100
// 4.静态方法获取BigInteger的对象,内部有优化
// 细节:
// 1、表示范围比较小,在long的取值范围之内,超出long的范围就不行了
// 2、在内部对常用的数字: -16 ~ 16 进行了优化
// 提前把 -16 ~ 16 先创建好BigInteger的对象,如果多次获取就不会重新创建新的
BigInteger bd5 = BigInteger.valueOf(100);
System.out.println(bd5);
System.out.println(Long.MAX_VALUE); // 9223372036854775807
}
}
package demo2;
import java.math.BigInteger;
public class BigIntergerDemo2 {
public static void main(String[] args) {
BigInteger bd1 = BigInteger.valueOf(10);
BigInteger bd2 = BigInteger.valueOf(5);
// 加法
BigInteger bd3 = bd1.add(bd2);
System.out.println(bd3);
// 除法,获得商和余数
BigInteger[] arr = bd1.divideAndRemainder(bd2);
System.out.println(arr.length);
System.out.println(arr[0]);
System.out.println(arr[1]);
// 比较是否相同
boolean result = bd1.equals(bd2);
System.out.println(result); // false
// 次幂
BigInteger bd4 = bd1.pow(2);
System.out.println(bd4);
// 最大/最小
BigInteger bd5 = bd1.max(bd2);
System.out.println(bd5); // 10
System.out.println(bd5 == bd1); //true
System.out.println(bd5 == bd2); //false
}
}