如何在java中把BigInteger转换成Integer/从Integer转换成BigInteger?

752 阅读3分钟

在这篇博文中,我们将学习如何将Integer/int 从/到Biginteger ,并举例说明。

java.math.BigInteger类

BigInteger 是一个定义在java.math 包中的类。 Integer类是原始类型 int 的包装器,定义在java.lang 包中。

BigintegerIntegerint 之间没有自动转换。我们必须写一段代码来进行转换。

该代码简单明了。

对于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
如果你有任何问题,请评论。