现在假设我正在为我的数据库分配ID号,数据库很大(超过机器代表号的物品)。
我正在使用Java,我知道Java中最大的数据类型是long int(64位)。我怎么能处理比这更大的数字?
我的一个解决方案是始终将数字转换为字符串,这将导致开销,我仍然不知道如何累积要转换为字符串的数字(大于MAX_VALUE)。
答案 0 :(得分:7)
BigInteger a = new BigInteger("123456789012345678901234567890");
BigInteger b = new BigInteger("314159265");
BigInteger c = a.add(b);
System.out.println(c);
注意(1)BigInteger
是不可变的,(2)你必须使用方法add
,subtract
等而不是+
,{{1等等。
此外,-
(及其浮点模拟,BigInteger
)比原始类型慢得多。 BigDecimal
适用于大多数情况,但如果可能,请在性能敏感代码中避免使用它。
答案 1 :(得分:2)
您在Java中拥有特定的大数字类,例如BigInteger。
答案 2 :(得分:0)
Java在其标准库中有一个类java.math.BigInteger
,用于保存(并执行算术)任意大整数。
但是如果您不需要执行算术运算,就像数据库ID一样,普通String
也可以正常工作。
关于如何在将数字转换为String
之前获取数字,这取决于您访问数据库的方式。如果您使用最标准的选项 JDBC ,您将在某些点上拥有java.sql.ResultSet
。您可以调用ResultSet.getString(int columnIndex)
或ResultSet.getString(String columnName)
方法,即使数据库中的列是数字,也可以立即从中获取String,而无需通过中间int
或{{1变量。