【从零开始学习JAVA | 第二十二篇】BigInteger

这篇具有很好参考价值的文章主要介绍了【从零开始学习JAVA | 第二十二篇】BigInteger。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

java biginterger,【从零开始学习JAVA】,学习

目录

 前言:

 BigInterger:

BigInteger常见的方法:

总结:


 前言:

        本篇我们将介绍BigInteger这个比较实用一点的API,这个API在我们实际写项目中都是很实用的API,因此大家应该对这个API有更加熟练的掌握。

 BigInterger:

在Java中,整数类型int和long的取值范围是有限的,超出该范围的整数无法进行运算或表示。而在某些应用场景中,需要处理的数可能具有非常大的位数,此时可以使用Java中的BigInteger类。

BigInteger是Java中的一个类,用于表示任意精度的整数。它可以处理比long更大范围的整数,支持加、减、乘和除等基本运算,还支持位运算、比较、判断奇偶性等操作。BigInteger对象是不可变的,因此一旦创建,就不能修改其值。

以下是一个使用BigInteger类的简单示例。该示例演示了如何计算1到100的阶乘之和。

import java.math.BigInteger;

public class BigIntDemo {
    public static void main(String[] args) {
        BigInteger result = BigInteger.ZERO;
        BigInteger fac = BigInteger.ONE;

        for (int i = 1; i <= 100; i++) {
            fac = fac.multiply(BigInteger.valueOf(i));
            result = result.add(fac);
        }

        System.out.println(result);
    }
}

输出:

9332621544394415268169923885626670049071596826438162146
8592963895217599993229915608941463976156518286253697920
827223758251185210916864000000000000000000000000

BigInteger.ZERO和BigInteger.ONE是BigInteger类的常量,分别表示值为0和1的BigInteger对象。它们的定义如下:


public static final BigInteger ZERO = new BigInteger(new int[0], 0);
public static final BigInteger ONE = valueOf(1);

我们可以使用这两个常量来进行初始化操作,例如:

BigInteger x = BigInteger.ZERO;
BigInteger y = BigInteger.ONE;

这里我们将变量x和y,分别初始化为0和1的BigInteger对象。由于BigInteger对象是不可变的,因此这两个常量可以被多次使用,而不必担心其值被修改。

以上示例中,我们使用了BigInteger.ZERO和BigInteger.ONE常量来初始化了变量result和fac包含了BigInteger.valueOf静态方法来创建一个大整数对象,这个创建方法接受一个long型的参数作为参数。这样就不必使用String类型的构造函数,而可以直接将一个整数包装在BigInteger对象中。在for循环中,我们使用了multiply方法来计算阶乘并将其加入到结果中。

BigInteger常见的方法:

1. 构造函数和静态工厂方法

BigInteger类提供了多个构造函数和静态工厂方法(静态方法返回一个新的BigInteger对象),用于创建BigInteger对象。常用的有:

  • public BigInteger(String val):用字符串val创建一个BigInteger对象。
  • public BigInteger(int signum, byte[] magnitude):用数组magnitude表示的值创建一个BigInteger对象,其中signum指定值的正负性。
  • public static BigInteger valueOf(long val):用long类型的值创建一个新的BigInteger对象。
  • public static BigInteger probablePrime(int bitLength, Random rnd):返回一个bitLength位大的素数。

2. 算术运算方法

BigInteger类支持多种算术运算方法,包括加减乘除、求余等。常用的有:

  • public BigInteger add(BigInteger val):将当前BigInteger对象加上另一个BigInteger对象val。
  • public BigInteger subtract(BigInteger val):将当前BigInteger对象减去另一个BigInteger对象val。
  • public BigInteger multiply(BigInteger val):将当前BigInteger对象乘以另一个BigInteger对象val。
  • public BigInteger divide(BigInteger val):将当前BigInteger对象除以另一个BigInteger对象val。
  • public BigInteger mod(BigInteger val):求当前BigInteger对象对另一个BigInteger对象val取模。
  • public BigInteger pow(int exponent):求当前BigInteger对象的exponent次方。

3. 比较方法

BigInteger类提供了多种比较方法,用于比较两个BigInteger对象的大小关系。常用的有:

  • public int compareTo(BigInteger val):比较当前BigInteger对象与另一个BigInteger对象val的大小关系,返回-1、0或1。
  • public boolean equals(Object obj):判断当前BigInteger对象是否等于另一个对象obj。
  • public int signum():返回当前BigInteger对象的符号,-1表示负数,0表示零,1表示正数。

4. 转换方法

BigInteger类提供了多种转换方法,用于将BigInteger对象转换为其他类型的值。常用的有:

  • public byte[] toByteArray():返回当前BigInteger对象的二进制表示,用byte数组表示。
  • public String toString()`:将当前BigInteger对象转换成字符串表示。
  • public String toString(int radix):将当前BigInteger对象转换成radix进制的字符串表示。
  • public int intValue()、public long longValue()、public float floatValue()、public double doubleValue():将当前BigInteger对象转换成对应的基本类型值。

总结:

        以上只是BigInteger类提供的部分常用方法和API,实际上BigInteger类还有很多其它实用的方法和API可供使用。

        在实际应用中,BigInteger可以用于任何需要处理大整数的场合,例如密码学、大数计算等方面。总之,BigInteger类提供了一种简单、可靠的处理大数字的方法,可以方便我们进行精密计算。

如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力!

java biginterger,【从零开始学习JAVA】,学习文章来源地址https://www.toymoban.com/news/detail-611224.html

到了这里,关于【从零开始学习JAVA | 第二十二篇】BigInteger的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【从零开始学习JAVA | 第二十九篇】Stream流

    目录 前言: Stram流: 设计目标: 使用步骤: 1.先得到一条Stream流,并把数据放上去。 2.利用Stream流中的各种API进行操作。 使用Stream流的注意事项: 总结:         本文我们将学习Stream流,他就像流水线一样,可以对我们要处理的对象进行逐步处理,最终达到我们想要的效果

    2024年02月17日
    浏览(36)
  • 【从零开始学习JAVA | 第二十三篇】集合体系结构

    目录 前言: 单列集合:      set与list的区别: 双列集合: map的特点: 总结:                   JAVA中为我们提供了很多集合,这些集合都有自己很独特的特点,因此我们要学习所有的集合,但是在学习所有的集合之前,我们还是先为大家介绍一下JAVA的集合体系结构,这

    2024年02月16日
    浏览(43)
  • 【从零开始学习JAVA | 第二十七篇】JAVA期末练习(PTA)

    目录 前言: R7-5 Count the letters in a string (统计字符串中的字符) R7-1 找素数 R7-3 电话号码同步(Java) 总结:         临近期末,我也更新一下PTA上的JAVA大题,希望各位都可以考出一个好的成绩。 (Count the letters in a string) (统计字符串中的字符) Write a method that counts th

    2024年02月16日
    浏览(36)
  • 【从零开始学习JAVA | 第二十篇】常见API介绍 Math

    目录 前言:  MATH: Math类中的常用方法: 总结:                 本篇往后我们会详细介绍一些常用的API,今天我们介绍的是Math的常用方法。但是其实我们不需要记住所有的方法,在日常工作中自己学会查询API文档就可以了。 Math类是Java中提供的一个标准类, 它包含了许多

    2024年02月15日
    浏览(28)
  • 【从零开始学习JAVA | 第二十一篇】常见API介绍 System

    目录 前言: System: System类中静态方法: 总结:                 system 是一个很底层的 API,是一个工具类, 提供了一些与系统相关的方法 。他在我们写项目的时候提供了一些非常实用的方法,本篇将会介绍一些实用的system API 的方法调用。 System类是Java语言提供的一个

    2024年02月15日
    浏览(38)
  • 从零开始学习 Java:简单易懂的入门指南之泛型及set集合(二十二)

    1.1泛型概述 泛型的介绍 ​ 泛型是JDK5中引入的特性,它提供了编译时类型安全检测机制 泛型的好处 把运行时期的问题提前到了编译期间 避免了强制类型转换 泛型的定义格式 类型: 指定一种类型的格式.尖括号里面可以任意书写,一般只写一个字母.例如: 类型1,类型2…: 指定多

    2024年02月09日
    浏览(27)
  • 【从零开始学JAVA | 第二十四篇】单列集合的遍历

    目录 前言: 单列集合的遍历方式: 迭代器遍历: 增强for遍历: lambda方法遍历:  总结: 本篇我们会讲解关于单列集合的几种遍历方式,遍历集合可以说是对于集合要求掌握的最低技能,因此我们要熟练的掌握遍历集合的方式。 在这里我们不讲for循环遍历,for循环无法对单

    2024年02月16日
    浏览(35)
  • 【从零开始学习C++ | 第二十一篇】C++新增特性 (上)

    目录  前言: 委托构造函数: 类内初始化: 空指针: 枚举类: 总结:         C++的学习难度大,内容繁多。因此我们要及时掌握C++的各种特性,因此我们更新本篇文章,向大家介绍C++的新增特性。 委托构造函数是指一 个类的构造函数调用另一个类的构造函数,以减少代

    2024年02月13日
    浏览(52)
  • 【Kubernetes】第二十二篇 - k8s 部署 MySQL 服务(secret、deployment、service)

    上一篇,介绍基于 k8s 项目部署流程设计; 本篇,介绍 MySQL 服务的部署; 部署 MySQL 可以为指定 node 添加污点,专门用于 mysql 部署(当前只有一个节点,不考虑); 为了保证mysql容器重启时数据不会丢失:创建 mysql 数据目录,用于存储 mysql 数据,实现 MySQL 数据的持久化;

    2024年02月03日
    浏览(42)
  • 从零开始学习 Java:简单易懂的入门指南之MAth、System(十二)

    tips:了解内容 查看API文档,我们可以看到API文档中关于Math类的定义如下: Math类所在包为java.lang包,因此在使用的时候不需要进行导包。并且Math类被final修饰了,因此该类是不能被继承的。 Math类包含执行基本数字运算的方法,我们可以使用Math类完成基本的数学运算。 要想

    2024年02月12日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包