一、BIgInteger
在Java中,由CPU原生提供的整型最大范围是64位1ong型整数。使用long型整数可以直接通过cPU指令进行计算,速度非常快。如果我们使用的整数范围超过了1og型怎么办?这
个时候,就只能用数据结构来模拟一个大整数。java.math.BigInteger就是用来表示任意大小的整数。BigInteger内部用一个int[]数组来模拟一个非常大的整数:
BigInteger和Integer、Long一样,也是不可变类,并且也继承自Number类。因为Numbe、下定义了转换为基本类型的几个方法:
1、转换为byte:byteValue()
2、转换为short:shortValue()
3、转换为int:intValue()
4、转换为1onglongValue()
5、转换为f1oat:floatValue()
6、转换为doubledoubleValue()
因此,通过上述方法,可以把BigInteger转换成基本类型。如果BigInteger表示的范围超过了基本类型的范围,转换时将丢失高位信息,即结果不一定是准确的。如果需要准确地转换成基本类型,可以使用intValueExact()、longValueExact()等方法,在转换时如果超出范围,将直接抛
ArithmeticException异常。
BigInteger和1ong型整数运算比,BigInteger不会有范围限制,但缺点是速度比较慢。也可以把BigInteger转换成long型:
eg1
package com.x