File size: 2,431 Bytes
0284885
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
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
    }
}