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

目录

 前言:

 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类提供了一种简单、可靠的处理大数字的方法,可以方便我们进行精密计算。

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

猜你喜欢

转载自blog.csdn.net/fckbb/article/details/131407175
今日推荐