Java / API_project /BigInteger_module /src /BigInteger_demo1.java
zxy0307's picture
Upload 2300 files
0284885 verified
Raw History Blame Contribute Delete
2.43 kB
import java.math.BigInteger;
import java.util.Random;
public class BigInteger_demo1 {
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();
for (int i = 0; i < 100; i++) {
BigInteger bd1 = new BigInteger(4, r);
System.out.println(bd1);//[0, 15]
}
//2、获取一个指定的大整数
//细节:字符串中必须是整数,否则会报错
BigInteger bd2 = new BigInteger("99999999999");
System.out.println(bd2);
//3、获取指定进制的大整数
//细节:
//1、字符串中的数字必须是整数
//2、字符串中的数字必须要跟进制吻合
//比如二进制中,只能写0和1,写其他的就报错
BigInteger bd3 = new BigInteger("1000", 2);
System.out.println(bd3);
//4、静态方法获取BigInteger的对象,内部有优化
//细节:
//1、能表示范围比较小,在long的取值范围之类,如果超出long的范围就不行了
//2、在内部对常用的数字:-16~16进行了优化。
// 提前把-16~16先创建好BigInteger的对象,如果多次获取不会重新创建新的。
BigInteger bd5 = BigInteger.valueOf(16);
BigInteger bd6 = BigInteger.valueOf(16);
System.out.println(bd5 == bd6);//true
BigInteger bd7 = BigInteger.valueOf(17);
BigInteger bd8 = BigInteger.valueOf(17);
System.out.println(bd7 == bd8);//false
//5、对象一旦创建内部的数据不能发生改变
BigInteger bd9 = BigInteger.valueOf(1);
BigInteger bd10 = BigInteger.valueOf(2);
BigInteger result = bd9.add(bd10);
System.out.println(result);//3
//此时,不会修改参与计算的BigInteger对象中的值,而是产生了一个新的BigInteger对象记录3
}
}