目录
- 一、BigInteger类简单介绍
- 二、BigInteger构造方式
- (1)构造方式
- (2)输入方式
- 三、BigInteger常见的成员方法
- (1)方法介绍
- (2)方法使用演示
- 1.加减乘除余
- 2.比较
- 3.绝对值和幂
- 4.转换成对应进制字符串
- 四、BigInteger不常见的成员方法
一、BigInteger类简单介绍
我们都知道Integer的存储范围是-2^31~2^31-1(-2147483648~2147483647),当我们要存储比Integer更大的数字时,java中就为我们提供了一个BigInteger类,方便我们去处理更大的数。
BigInteger 类支持任意精度的整数,也就是说在运算中 BigInteger 类可以准确地表示任何大小的整数值。首先除了基本的操作加、减、乘、除,在该类中还封装了其他很有用的操作,接下来将一一介绍。
二、BigInteger构造方式
(1)构造方式
很显然,BigInteger是一个封装类,就跟String类是一样的。使用时需要导入import java.math.BigInteger;
使用 BigInteger 类,首先要创建一个 BigInteger 对象。BigInteger是一个有参构造,需要传入一个参数,最常见的就是给定一个字符串,使用构造方法public BigInteger(String val)构造一个十进制的BigInteger对象。
小贴士:该构造方法可以发生NumberFormatException异常,当字符串参数val中如果含有非数字字符就会发生该异常。
import java.math.BigInteger; /* * BigInteger演示 */ public class Test { public static void main(String[] args) { BigInteger bigInteger=new BigInteger("1123"); } }
(2)输入方式
普通输入:
Scanner sc=new Scanner(System.in); BigInteger a=sc.BigIntegerNext();
循环输入 :
while (sc.hasNextBigInteger()) { // 注意 while 处理多个 case }
除了定义实例,我们也可以像使用String类那样使用BigInteger类,给大家一个题目感受一下,该题就是本文开头所提及的三角形求解。
import java.math.BigInteger; import java.util.Arrays; import java.util.Scanner; /* * 三角形 */ public class Triangle { public static void main(String[] args) { Scanner sc=new Scanner(System.in); while (sc.hasNextBigInteger()) { // 注意 while 处理多个 case BigInteger []triangle=new BigInteger[3]; for(int i=0;i<3;i++) { triangle[i]=sc.nextBigInteger(); } Arrays.sort(triangle); if(triangle[0].add(triangle[1]).compareTo(triangle[2])>0) { System.out.println("Yes"); }else { System.out.println("No"); } } } }
三、BigInteger常见的成员方法
(1)方法介绍
方法名 | 含义 |
public BigInteger add(BigInteger val) | 返回当前大整数对象与参数指定的大整数对象的和。 |
public BigInteger subtract(BigInteger val) | 返回当前大整数对象与参数指定的大整数对象的差。 |
public BigInteger multiply(BigInteger val) | 返回当前大整数对象与参数指定的大整数对象的积。 |
public BigInteger divide(BigInteger val) | 返回当前大整数对象与参数指定的大整数对象的商。 |
public BigInteger remainder(BigInteger val) | 返回当前大整数对象与参数指定的大整数对象的余。 |
public int compareTo(BigInteger val) | 返回当前大整数对象与参数指定的大整数的比较结果, 返回值是1、-1或0,分别表示当前 大整数对象大于、小于或等于参数指定的大整数。 |
public BigInteger abs() | 返回当前大整数对象的绝对值。 |
public BigInteger pow(int a) | 返回当前大整数对象的a次幂。 |
public String toString() | 返回当前大整数对象十进制的字符串表示。 |
public String toString(int p) | 返回当前大数对象p进制的字符串表示。 |
(2)方法使用演示
1.加减乘除余
import java.math.BigInteger; import java.util.Scanner; /* * BigInteger演示 */ public class Test { public static void main(String[] args) { Scanner sc=new Scanner(System.in); BigInteger a=sc.nextBigInteger(); BigInteger b=sc.nextBigInteger(); System.out.println(a.add(b));//加 System.out.println(a.subtract(b));//减 System.out.println(a.multiply(b));//乘 System.out.println(a.divide(b));//除 System.out.println(a.remainder(b));//余 } }
看结果对于超大数字,也是完美计算结果的。
a>b返回结果为1。