如何处理大于机器代表号的数字?

假设现在我正在为我的数据库分配ID号,数据库是巨大的(项目超过机器代表号)。

我正在使用Java,我知道Java中最大的数据类型是long int(64位)。 我怎么能处理比这更大的数字?

我的解决方案之一总是将数字转换为字符串,这将导致开销,我仍然不知道如何累积要转换为字符串的数字(大于MAX_VALUE)。

使用java.math.BigInteger 。

 BigInteger a = new BigInteger("123456789012345678901234567890"); BigInteger b = new BigInteger("314159265"); BigInteger c = a.add(b); System.out.println(c); 

注意(1) BigInteger是不可变的,(2)你必须使用方法addsubtract等而不是+-等。

此外, BigInteger (及其浮点模拟, BigDecimal )比原始类型慢得多。 BigInteger适用于大多数情况,但如果可能,请在性能敏感代码中避免使用它。

您在Java中有大数字的特定类,例如BigInteger 。

Java在其标准库中有一个类java.math.BigInteger ,用于保存(并执行算术)任意大整数。

但是,如果您不需要执行算术运算,就像数据库ID一样,普通的String也可以正常工作。

至于如何在将数字转换为String之前获取数字,这取决于您访问数据库的方式。 如果使用最标准的JDBC选项,则会在某个点上有一个java.sql.ResultSet 。 您可以调用ResultSet.getString(int columnIndex)ResultSet.getString(String columnName)方法,即使数据库中的列是数字,也可以立即从中获取String,而无需通过中间的intlong变量。