为了账号安全,请及时绑定邮箱和手机立即绑定

BigInteger 不可变的替代方案/解决方法

BigInteger 不可变的替代方案/解决方法

猛跑小猪 2021-12-10 16:41:25
在我的游戏中你有钱。货币值存储在类型为 的变量中long。问题是这个变量的最大值是不够的。所以我想把它改成 a BigInteger,但这是一个不可变的类,我需要在同一个地方存储和更新这个值。是否有另一个类似的类BigInteger不是一成不变的或解决方法?
查看完整描述

2 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

您可以BigInteger为此目的使用,但我不明白不变性如何影响用例。


您可以对一个BigInteger. 例如:


BigInteger a = BigInteger.valueOf(100);

a = a.add(BigInteger.valueOf(200));

BigInteger b = a.multiply(BigInteger.valueOf(2));

由于不变性而发生的唯一变化是,每次获得值时都需要创建一个新对象,但您可以使用该值覆盖当前对象。此外,不变性在多线程情况下不易出错。


查看完整回答
反对 回复 2021-12-10
?
暮色呼如

TA贡献1853条经验 获得超9个赞

默认情况下,Java 没有存储值大于 long 值的数据类型(关键字)。

有一种对象类型,您可以随心所欲地存储值 - 只要您的系统的 RAM 可以处理它,即 BigInteger 和 BigDecimal。

不幸的是,没有类似的内置类BigInteger不是不可变的。更改 BigInteger 对象中的值的唯一方法是重新分配它,这意味着每次要更改值时都创建一个实例。

但是,如果您在短时间内多次更改该值,这可能会降低性能。您可以创建一个String变量,如果有更改,您可以重新分配它,然后最后您可以重新分配 BigInteger 对象。

简短的回答,没有。


查看完整回答
反对 回复 2021-12-10
  • 2 回答
  • 0 关注
  • 203 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信