所有类


java.math
类 BigInteger

java.lang.Object
  继承者 java.lang.Number
      继承者 java.math.BigInteger
所有已实现的接口:
Serializable, Comparable<BigInteger>

public class BigInteger
   
   
   
   
   
extends Number
implements Comparable<BigInteger>

不可变的任意精度的整数。所有操作中,都以二进制补码形式表示 BigInteger(如 Java 的基本整数类型)。BigInteger 提供所有 Java 的基本整数操作符的对应物,并提供 java.lang.Math 的所有相关方法。另外,BigInteger 还提供以下运算:模算术、GCD 计算、质数测试、素数生成、位操作以及一些其他操作。

算术运算的语义完全模仿 Java 整数算术运算符的语义,如 The Java Language Specification 中所定义的。例如,以零作为除数的除法抛出 ArithmeticException,而负数除以正数的除法则产生一个负(或零)的余数。Spec 中关于溢出的细节都被忽略了,因为 BigIntegers 所设置的实际大小能适应操作结果的需要。

位移操作的语义扩展了 Java 的位移操作符的语义以允许产生负位移距离。带有负位移距离的右移操作会导致左移操作,反之亦然。忽略无符号的右位移运算符(>>>),因为该操作与由此类提供的“无穷大的词大小”抽象结合使用时毫无意义。

逐位逻辑运算的语义完全模仿 Java 的逐位整数运算符的语义。在执行操作之前,二进制运算符(andorxor)对两个操作数中的较短操作数隐式执行符号扩展。

比较操作执行有符号的整数比较,类似于 Java 的关系运算符和相等性运算符执行的比较。

提供的模算术操作用来计算余数、求幂和乘法可逆元。这些方法始终返回非负结果,范围在 0(modulus - 1)(包括)之间。

位操作对其操作数的二进制补码表示形式的单个位进行操作。如有必要,操作数会通过扩展符号来包含指定的位。单一位操作不能产生与正在被操作的 BigInteger 符号不同的 BigInteger,因为它们仅仅影响单个位,并且此类提供的“无穷大词大小”抽象可保证在每个 BigInteger 前存在无穷多的“虚拟符号位”数。

为了简洁明了,在整个 BigInteger 方法的描述中都使用了伪代码。伪代码表达式 (i + j) 是“其值为 BigInteger i 加 BigInteger j 的 BigInteger”的简写。伪代码表达式 (i == j) 是“当且仅当 BigInteger i 表示与 BigInteger j 相同的值时,才为 true”的简写。可以类似地解释其他伪代码表达式。

当为任何输入参数传递 null 对象引用时,此类中的所有方法和构造方法都将抛出 NullPointerException

从以下版本开始:
JDK1.1
另请参见:
BigDecimal, 序列化表格

字段摘要
static BigIntegerONE
          BigInteger 的常量 1。
static BigIntegerTEN
          BigInteger 的常量 10。
static BigIntegerZERO
          BigInteger 的常量 0。
 
构造方法摘要
BigInteger(byte[] val)
          将包含 BigInteger 的二进制补码表示形式的字节数组转换为 BigInteger。
BigInteger(int signum, byte[] magnitude)
          将 BigInteger 的符号-数量表示形式转换为 BigInteger。
BigInteger(int bitLength, int certainty, Random rnd)
          构造一个随机生成的正 BigInteger,它可能是一个具有指定 bitLength 的素数。
BigInteger(int numBits, Random rnd)
          构造一个随机生成的 BigInteger,它是在 0(2numBits - 1)(包括)范围内均匀分布的值。
BigInteger(String val)
          将 BigInteger 的十进制字符串表示形式转换为 BigInteger。
BigInteger(String val, int radix)
          将指定基数的 BigInteger 的字符串表示形式转换为 BigInteger。
 
方法摘要
 BigIntegerabs()
          返回其值是此 BigInteger 的绝对值的 BigInteger。
 BigIntegeradd(BigInteger val)
          返回其值为 (this + val) 的 BigInteger。
 BigIntegerand(BigInteger val)
          返回其值为 (this & val) 的 BigInteger。
 BigIntegerandNot(BigInteger val)
          返回其值为 (this & ~val) 的 BigInteger。
 intbitCount()
          返回此 BigInteger 的二进制补码表示形式中与符号不同的位的数量。
 intbitLength()
          返回此 BigInteger 的最小的二进制补码表示形式的位数,不包括 符号位。
 BigIntegerclearBit(int n)
          返回其值与清除了指定位的此 BigInteger 等效的 BigInteger。
 intcompareTo(BigInteger val)
          将此 BigInteger 与指定的 BigInteger 进行比较。
 BigIntegerdivide(BigInteger val)
          返回其值为 (this / val) 的 BigInteger。
 BigInteger[]divideAndRemainder(BigInteger val)
          返回包含 (this / val) 后跟 (this % val) 的两个 BigInteger 的数组。
 doubledoubleValue()
          将此 BigInteger 转换为 double
 booleanequals(Object x)
          比较此 BigInteger 与指定的 Object 的相等性。
 BigIntegerflipBit(int n)
          返回其值与对此 BigInteger 进行指定位翻转后的值等效的 BigInteger。
 floatfloatValue()
          将此 BigInteger 转换为 float
 BigIntegergcd(BigInteger val)
          返回一个 BigInteger,其值是 abs(this)abs(val) 的最大公约数。
 intgetLowestSetBit()
          返回此 BigInteger 最右端(最低位)1 比特的索引(即从此字节的右端开始到本字节中最右端 1 比特之间的 0 比特的位数)。
 inthashCode()
          返回此 BigInteger 的哈希码。
 intintValue()
          将此 BigInteger 转换为 int
 booleanisProbablePrime(int certainty)
          如果此 BigInteger 可能为素数,则返回 true,如果它一定为合数,则返回 false
 longlongValue()
          将此 BigInteger 转换为 long
 BigIntegermax(BigInteger val)
          返回此 BigInteger 和 val 的最大值。
 BigIntegermin(BigInteger val)
          返回此 BigInteger 和 val 的最小值。
 BigIntegermod(BigInteger m)
          返回其值为 (this mod m) 的 BigInteger。
 BigIntegermodInverse(BigInteger m)
          返回其值为 (this-1 mod m) 的 BigInteger。
 BigIntegermodPow(BigInteger exponent, BigInteger m)
          返回其值为 (thisexponent mod m) 的 BigInteger。
 BigIntegermultiply(BigInteger val)
          返回其值为 (this * val) 的 BigInteger。
 BigIntegernegate()
          返回其值是 (-this) 的 BigInteger。
 BigIntegernextProbablePrime()
          返回大于此 BigInteger 的可能为素数的第一个整数。
 BigIntegernot()
          返回其值为 (~this) 的 BigInteger。
 BigIntegeror(BigInteger val)
          返回其值为 (this | val) 的 BigInteger。
 BigIntegerpow(int exponent)
          返回其值为 (thisexponent) 的 BigInteger。
static BigIntegerprobablePrime(int bitLength, Random rnd)
          返回有可能是素数的、具有指定长度的正 BigInteger。
 BigIntegerremainder(BigInteger val)
          返回其值为 (this % val) 的 BigInteger。
 BigIntegersetBit(int n)
          返回其值与设置了指定位的此 BigInteger 等效的 BigInteger。
 BigIntegershiftLeft(int n)
          返回其值为 (this << n) 的 BigInteger。
 BigIntegershiftRight(int n)
          返回其值为 (this >> n) 的 BigInteger。
 intsignum()
          返回此 BigInteger 的正负号函数。
 BigIntegersubtract(BigInteger val)
          返回其值为 (this - val) 的 BigInteger。
 booleantestBit(int n)
          当且仅当设置了指定的位时,返回 true
 byte[]toByteArray()
          返回一个字节数组,该数组包含此 BigInteger 的二进制补码表示形式。
 StringtoString()
          返回此 BigInteger 的十进制字符串表示形式。
 StringtoString(int radix)
          返回此 BigInteger 的给定基数的字符串表示形式。
static BigIntegervalueOf(long val)
          返回其值等于指定 long 的值的 BigInteger。
 BigIntegerxor(BigInteger val)
          返回其值为 (this ^ val) 的 BigInteger。
 
从类 java.lang.Number 继承的方法
byteValue, shortValue
 
从类 java.lang.Object 继承的方法
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

字段详细信息

ZERO

public static final BigInteger ZERO
BigInteger 的常量 0。

从以下版本开始:
1.2

ONE

public static final BigInteger ONE
BigInteger 的常量 1。

从以下版本开始:
1.2

TEN

public static final BigInteger TEN
BigInteger 的常量 10。

从以下版本开始:
1.5
构造方法详细信息

BigInteger

public BigInteger(byte[] val)
将包含 BigInteger 的二进制补码表示形式的字节数组转换为 BigInteger。输入数组假定为 big-endian 字节顺序:最高有效字节在第零个元素中。

参数:
val - BigInteger 的 big-endian 二进制补码表示形式。
抛出:
NumberFormatException - val 为零字节长。

BigInteger

public BigInteger(int signum,
                  byte[] magnitude)
将 BigInteger 的符号-数量表示形式转换为 BigInteger。该符号表示为一个正负号整数值:-1 表示负,0 表示零,1 表示正。该大小是一个 big-endian 字节顺序的字节数组:最高有效字节在第零个元素中。允许零长度数量数组,这会导致 BigInteger 的值为 0,无论其正负号是 -1、0 还是 1。

参数:
signum - 该数的正负号(-1 表示负,0 表示零,1 表示正)。
magnitude - 该数的大小的 big-endian 二进制表示形式。
抛出:
NumberFormatException - signum 不是三个合法值之一(-1、0 和 1),或者 signum 是 0 并且 magnitude 包含一个或多个非零字节。

BigInteger

public BigInteger(String val,
                  int radix)
将指定基数的 BigInteger 的字符串表示形式转换为 BigInteger。该字符串表示形式包括一个可选的减号,后跟一个或多个指定基数的数字。字符到数字的映射由 Character.digit 提供。该字符串不能包含任何其他字符(例如,空格)。

参数:
val - BigInteger 的字符串表示形式。
radix - 要在解释 val 时使用的基数。
抛出:
NumberFormatException - val 不是指定基数的 BigInteger 的有效表示形式,或者 radix 超出从 Character.MIN_RADIXCharacter.MAX_RADIX(包括)的范围。
另请参见:
Character.digit(char, int)

BigInteger

public BigInteger(String val)
将 BigInteger 的十进制字符串表示形式转换为 BigInteger。该字符串表示形式包括一个可选的减号,后跟一个或多个十进制数字序列。字符到数字的映射由 Character.digit 提供。该字符串不能包含任何其他字符(例如,空格)。

参数:
val - BigInteger 的十进制字符串表示形式。
抛出:
NumberFormatException - val 不是 BigInteger 的有效表示形式。
另请参见:
Character.digit(char, int)

BigInteger

public BigInteger(int numBits,
                  Random rnd)
构造一个随机生成的 BigInteger,它是在 0(2numBits - 1)(包括)范围内均匀分布的值。该分布的均匀性假定 rnd 中提供了一个随机位的公平源 (fair source)。注意,此构造方法始终构造一个非负 BigInteger。

参数:
numBits - 新 BigInteger 的最大 bitLength。
rnd - 计算新 BigInteger 时使用的随机源。
抛出:
IllegalArgumentException - 如果 numBits 为负。
另请参见:
bitLength