在这篇博文中,我们将学习如何将Integer/int 从/到Biginteger ,并举例说明。
java.math.BigInteger类
BigInteger 是一个定义在java.math 包中的类。 Integer类是原始类型 int 的包装器,定义在java.lang 包中。
Biginteger 与Integer 或int 之间没有自动转换。我们必须写一段代码来进行转换。
该代码简单明了。
对于java程序员来说,Integer与BigInteger之间的转换是一项日常工作。
几天前,我在我的java项目中需要将BigInteger转换为Integer。
BigInteger BigInteger将被用于任意的预演算术计算,该计算的结果值超出了所有原始数字类型的值的范围。
例如,如果我们赋值如下,编译器将不会编译并抛出int类型的字面意义超出了范围
Integer intvalue=12456878999999
在Java中,Integer类型存储的数值范围是2的31次方-1-2的31次方,因为int保存在4个字节以上。
Long 在Java中,Integer类型存储的数值范围是2的63次方-1-2的63次方。原因是long数据超过8个字节。
对于BigInteger到Integer的转换,如果biginteger无法转换为Integer类型,那么转换会给出意想不到的数值,并且丢失BigInteger的大小数据,并且返回相反的符号,如果是Integer类型,对于Integer,它返回最低4字节的数值,对于Long,它返回最低8字节的数值
我们将在下面的部分看到转换的例子和解释。
在java中把整数转换为BigInteger对象的例子
将整数或int转换为BigInteger是一项简单的任务,我们可以通过多种方式在java中把Integer转换为BigInteger。
使用字符串转换 - 首先,使用空字符串连接或使用toString()方法将整数转换为字符串对象,BigInteger提供了接受字符串值的构造函数。
import java.math.BigInteger;
public class ConvertIntegerToBigIntegerUsingString {
public static void main(String[] args) {
Integer value= 1123;
BigInteger bi=new BigInteger("" + value); // convert to String using empty string concat
System.out.println(bi);
BigInteger bi1=new BigInteger(value.toString()); // convert to String using toString method
System.out.println(bi1);
}
}
上述代码的执行结果是
1123
1123
这正如预期的那样工作。这使得转换过程中不需要创建字符串对象,并且需要更多的CPU周期来进行字符串转换。这是不可取的。我们将看到使用valueOf()方法的其他方法。
使用valueOf()方法-- BigInteger类有 valueOf()静态工厂方法 ,它接收长值作为输入参数并返回BigInteger对象,其值等于相同的指定类型。
public static BigInteger valueOf(long val)
import java.math.BigInteger;
public class ConvertIntegerToBigIntegerUsingString {
public static void main(String[] args) {
int integerMaximumValue = 123;
BigInteger bigIntegerdemo = BigInteger.valueOf(integerMaximumValue);
System.out.println(bigIntegerdemo);
}
}
上述程序的执行结果是
123
将BigInteger转换为Integer对象。
BigInteger类有intValue()方法来转换为Integer对象,下面是该方法的语法
不需要参数
返回 - BigInteger值中的int
import java.math.BigInteger;
public class ConvertBigIntegerToInteger {
public static void main(String[] args) {
BigInteger bigInteger =BigInteger.valueOf(6895); // BigInteger Object creation
System.out.println(bigInteger.intValue()); // using intValue
}
}
输出是
6895
将BigInteger转换为Integer总是不安全的,因为这将产生溢出错误 最大和最小的Integer值是
Integer.MAX_VALUE = 2147483647
Integer.MIN_VALUE = -2147483648
注意- 如果BigInteger 值超出了整数值的范围。你会看到溢出值,如Negative 。
如果你有任何问题,请评论。