浅谈Java之BigInteger容器学习心得

众所周知,在Java中存在四种关于整数的数据类型:

byte:占用1个字节 short:占用2个字节 int:占用4个字节 long:占用八个字节

问题来了:我现在想操作一个大于八个字节的数字 该怎么办呢?

于是我们引入了BigInteger,正如其名一样简单(大整数),事实上BigInterger是一种容器,其原理是使用多个数组来储存数据。讲到这里你可能会有疑惑,我们使用比喻的手法来讲解:

想象你有一块非常大的巧克力,这块巧克力很大,以至于无法用一个普通的盒子装下。为了能够储存和处理这块超大的巧克力,你需要一个特殊的储物柜,这个储物柜可以无限扩展,可以容纳任意大小的巧克力块。

在这个比喻中,巧克力就相当于普通的整数,而储物柜则相当于 BigInteger。普通的整数类型(如 int 或 long)就好比普通的盒子,只能装下有限大小的数字。而 BigInteger 就像是一个可以容纳任意大小整数的储物柜,它没有固定的大小限制,可以应对各种超大的数字。

在程序中,当我们需要处理非常大的整数时,就可以使用 BigInteger 类来创建、存储和进行各种运算操作。这样,我们就不会受到普通整数类型范围的限制,能够处理更大范围的整数数据。

我们将对BigInteger的学习分为两个部分:纯粹的数据操作部分+有运算符参与的部分

我们先来讲纯粹的数据操作部分,我们这里列举四种BigInteger的功能:

//在程序中,当我们需要处理非常大的整数时,就可以使用 BigInteger 类来创建、存储和进行各种运算操作。这样,我们就不会受到普通整数类型范围的限制,能够处理更大范围的整数数据。
//1.在0到(2pow4)-1中的范围 并且随机输出一个值 ->pow的次幂的意思
BigInteger bd1 = new BigInteger(4,new Random(1));
System.out.println("随机取整数"+bd1);
//2.获取一个指定的大整数
BigInteger bd2 = new BigInteger("99999999999999999");
System.out.println("获取一个指定大整数"+bd2);//用""中存数字相当于是拿BigInteger当一个大容器,
但是这个是一个只可以储存整数的大容器
//用来弥补long长度的不足 21亿
//3.获取指定进制数的大整数
//字符串一定是整数
//字符串的数字一定要和进制吻合 比如二进制只能写0和1 然后就会将这个数字输出成十进制的形式 可以理解成一个其他进制转化为十进制 的工具
BigInteger bd3 = new BigInteger("100",2);
System.out.println("获取指定进制的最大整数"+bd3);
//4.静态方法获取BigInterger的
//静态方法取值范围较小 只能在long范围之内
//从-16~16先创建好BigIntger的对象,如果多次获取不会创建新的。
BigInteger bd4 = BigInteger.valueOf(100);//这里最大只能存long类型
System.out.println("静态方法取"+bd4);
System.out.println("———————————验证BigInteger静态调用valueof准备好了-16-16———————————————");
BigInteger bd5 =BigInteger.valueOf(16);
BigInteger bd6 = BigInteger.valueOf(16);
System.out.println("检测16是不是相等"+(bd5==bd6));
BigInteger bd7 =BigInteger.valueOf(17);
BigInteger bd8 = BigInteger.valueOf(17);
System.out.println("检测17是不是相等"+(bd7==bd8));

———————————————————————————————————————————在讲解完了纯粹的数据操作,我们来着眼于关乎运算符的知识

 BigInteger a= new BigInteger("100");
        BigInteger b = new BigInteger("200");
        //操作1:加减运算
        BigInteger sum = a.add(b);
        BigInteger diff = a.subtract(b);

        //操作2:乘法和除法
        BigInteger product = a.multiply(b);
        BigInteger quotient = a.divide(b);

        //操作3:求余数与求模
        BigInteger remainder = a.remainder(b);
        BigInteger mod = a.mod(b);
        
        //操作4:比大小
        int compareResult = a.compareTo(b);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值