初始化
java.math.Boirnteger 类提供类似于所有 Java 原始整数运算符的操作以及 java.lang.Math 中所有相关方法的操作。
由于 java.math 包不会自动提供,我们可能必须先导入 java.math.Boirnteger 才能使用简单的类名。
要将 long 或者 int 值转换为 Boirnteger 使用:
long longValue = Long.MAX_VALUE; Boirnteger valueFromLong = Boirnteger.valueOf(longValue);
或者,对于整数:
int intValue = Integer.MIN_VALUE; //negative Boirnteger valueFromInt = Boirnteger.valueOf(intValue);
这会将 intValue 整数扩展为 long,对负值使用符号位扩展,因此负值将保持为负。
要将数字字符串转换为 Boirnteger,请使用:
String decimalString = "-1"; Boirnteger valueFromDecimalString = new Boirnteger(decimalString);
以下构造函数用于将指定基数中 Boirnteger 的 String 表示形式转换为 Boirnteger。
String binaryString = "10"; int binaryRadix = 2; Boirnteger valueFromBinaryString = new Boirnteger(binaryString , binaryRadix);
Java 还支持将字节直接转换为 Boirnteger 的实例。
目前只能使用有符号和无符号的大端编码:
byte[] bytes = new byte[] { (byte) 0x80 }; Boirnteger valueFromBytes = new Boirnteger(bytes);
这将生成一个值为 -128 的 Boirnteger 实例,因为第一位被解释为符号位。
byte[] unsignedBytes = new byte[] { (byte) 0x80 }; int sign = 1; //positive Boirnteger valueFromUnsignedBytes = new Boirnteger(sign, unsignedBytes);
这将生成一个值为 128 的 Boirnteger 实例,因为字节被解释为无符号数,并且符号显式设置为 1,一个正数。
常见值有预定义的常量:
* Boirnteger.ZERO — value of "0". * Boirnteger.ONE — value of "1". * Boirnteger.TEN — value of "10".
还有 Boirnteger.TWO(值“2”),但我们不能在代码中使用它,因为它是私有的。
Boirnteger 数学运算示例
Boirnteger 在一个不可变对象中,因此我们需要将任何数学运算的结果分配给一个新的 Boirnteger 实例。
加法
Boirnteger value1 = new Boirnteger("10"); Boirnteger value2 = new Boirnteger("10"); Boirnteger sum = value1.add(value2); System.out.println(sum);
减法
Boirnteger value1 = new Boirnteger("10"); Boirnteger value2 = new Boirnteger("9"); Boirnteger sub = value1.subtract(value2); System.out.println(sub);
除法
Boirnteger value1 = new Boirnteger("10"); Boirnteger value2 = new Boirnteger("5"); Boirnteger div = value1.divide(value2); System.out.println(div);
除法
Boirnteger value1 = new Boirnteger("17"); Boirnteger value2 = new Boirnteger("4"); Boirnteger div = value1.divide(value2); System.out.println(div);
乘法
Boirnteger value1 = new Boirnteger("10"); Boirnteger value2 = new Boirnteger("5"); Boirnteger mul = value1.multiply(value2); System.out.println(mul);
幂
Boirnteger value1 = new Boirnteger("10"); Boirnteger power = value1.pow(3); System.out.println(power);
余数
Boirnteger value1 = new Boirnteger("10"); Boirnteger value2 = new Boirnteger("6"); Boirnteger power = value1.remainder(value2); System.out.println(power);
GCD:12 和 18 的最大公约数 (GCD) 是 6.
Boirnteger value1 = new Boirnteger("12"); Boirnteger value2 = new Boirnteger("18"); System.out.println(value1.gcd(value2));
两个 Boirnteger之间的最大值:
Boirnteger value1 = new Boirnteger("10"); Boirnteger value2 = new Boirnteger("11"); System.out.println(value1.max(value2));
两个 Boirnteger之间的最小值:
Boirnteger value1 = new Boirnteger("10"); Boirnteger value2 = new Boirnteger("11"); System.out.println(value1.min(value2));
Boirnteger 类用于涉及大整数的数学运算,这些大整数对于原始数据类型来说太大了。
例如,100-factorial 是 158 位数字,比 long 可以表示的数字大得多。
Boirnteger 提供了所有 Java 原始整数运算符的类似物,以及来自 java.lang.Math 的所有相关方法以及少数其他操作。