java BigInteger的基本使用

BigInteger

在这里插入图片描述
注意对象一旦创建,内部记录的值不能发生改变



import java.math.BigInteger;
import java.util.Random;

public class myBigInteger {
    public static void main(String[] args) {

        //获取一个随机的大整数
        BigInteger bigInteger=new BigInteger(4,new Random());
        System.out.println(bigInteger);//随机的范围是0到2的4次方-1
        //所以这个范围在0到15


        //获取一个随机的大整数  必须是整数
        BigInteger bigInteger1=new BigInteger("111");
        System.out.println(bigInteger1);//打印结果为111


        //获取指定进制的大整数

        BigInteger bigInteger2=new BigInteger("100",10);
        //表示获取10进制的100 打印结果为100
        //BigInteger bigInteger3=new BigInteger("123",2);
        //System.out.println(bigInteger3);
        //打印结果报错  因为 2进制只有0和1



        //静态方法获取BigInteger的对象 内部有优化
        BigInteger bigInteger4=BigInteger.valueOf(100);
        System.out.println(bigInteger4);//打印结果为100
        //但是他有一个缺点就是他的最大值是long的取值范围 超过long的就会报错
        System.out.println(Long.MAX_VALUE);//获取long的最大值9223372036854775807
       // BigInteger bigInteger5=BigInteger.valueOf(9223372036854775807);//这个会报错是因为默认是int型的末尾加个L就可以了
        BigInteger bigInteger6=BigInteger.valueOf(9223372036854775807L);//这个会报错是因为默认是int型的末尾加个L就可以了
//这个可以正常打印但是超过范围就不行了
        //BigInteger bigInteger7=BigInteger.valueOf(9223372036854775808L);//报错


        //内部有优化提起那吧-16到16先创建好了BigInteger对象 如果多次获取就不会创建新的
        BigInteger bigInteger7=BigInteger.valueOf(16);
        BigInteger bigInteger8=BigInteger.valueOf(16);
        System.out.println(bigInteger7==bigInteger8);//true

    }

小结

在这里插入图片描述

BigInteger常见方法

在这里插入图片描述

import java.math.BigInteger;

public class myBigInteger2 {
    public static void main(String[] args) {
        BigInteger bigInteger=BigInteger.valueOf(10);
        BigInteger bigInteger1=BigInteger.valueOf(2);


        BigInteger add = bigInteger.add(bigInteger1);
        System.out.println(add);//打印结果为12


        BigInteger[] bigIntegers = bigInteger.divideAndRemainder(bigInteger1);
        //返回是一个数组 因为他要返回商和余数   a0是商  a1是余数
        System.out.println(bigIntegers[0]);//5
        System.out.println(bigIntegers[1]);//0


        boolean b = bigInteger.equals(bigInteger1);
        System.out.println(b);//比较是否相同 返会false


        BigInteger pow = bigInteger.pow(2);
        System.out.println(pow);//打结果为10的2次方  100


        BigInteger max = bigInteger.max(bigInteger1);
        System.out.println(max);//返回两个的最大值



        //转化为int型整数  超出范围数据有误
        BigInteger bigInteger3=BigInteger.valueOf(200L);
        int i = bigInteger3.intValue();
        System.out.println(i);//打印结果200


        //转化为小数
        BigInteger bigInteger2=BigInteger.valueOf(100);
        double v = bigInteger2.doubleValue();
        System.out.println(v);//打印结果100.0
    }
}

BigInteger的底层存储原理

思考:为什么BigInteger能存储比自己大的数
在这里插入图片描述

因为采用分段是存储方式,第一个是符号位,第二三是以补码表示的两个32位数

BigInteger是有存储上限的但是上限特别高几乎是无限的

在这里插入图片描述

数组的最大长度21个亿长大概

在这里插入图片描述

总结

在这里插入图片描述
注意:BigInteger.valueOf()通常用于小一点的数组 因为他的-16到16是特殊值

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值