java BigInteger的基本使用

BigInteger


注意对象一旦创建,内部记录的值不能发生改变

java 复制代码
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常见方法

java 复制代码
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是特殊值

相关推荐
小画家~8 分钟前
第四十六: channel 高级使用
java·前端·数据库
天天进步201520 分钟前
【Nanobrowser源码分析4】交互篇: 从指令到动作:模拟点击、滚动与输入的底层实现
开发语言·javascript·ecmascript
Li_yizYa20 分钟前
Redis-常见数据类型及应用场景
java·数据库·redis
麦兜*27 分钟前
【springboot】图文详解Spring Boot自动配置原理:为什么@SpringBootApplication是核心?
android·java·spring boot·spring·spring cloud·tomcat
console.log('npc')27 分钟前
vue2中子组件父组件的修改参数
开发语言·前端·javascript
码点28 分钟前
【无标题】日文字库Japan.ini
开发语言
IT=>小脑虎32 分钟前
2026版 Python零基础小白学习知识点【基础版详解】
开发语言·python·学习
rabbit_pro39 分钟前
Java使用Mybatis-Plus封装动态数据源工具类
java·python·mybatis
wjs202442 分钟前
抽象工厂模式
开发语言
lly20240643 分钟前
SVG 模糊效果详解
开发语言