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

在我的游戏中你有钱。货币值存储在类型为 的变量中long。问题是这个变量的最大值是不够的。所以我想把它改成 a BigInteger,但这是一个不可变的类,我需要在同一个地方存储和更新这个值。

是否有另一个类似的类BigInteger不是一成不变的或解决方法?


猛跑小猪
浏览 204回答 2
2回答

30秒到达战场

您可以BigInteger为此目的使用,但我不明白不变性如何影响用例。您可以对一个BigInteger. 例如:BigInteger a = BigInteger.valueOf(100);a = a.add(BigInteger.valueOf(200));BigInteger b = a.multiply(BigInteger.valueOf(2));由于不变性而发生的唯一变化是,每次获得值时都需要创建一个新对象,但您可以使用该值覆盖当前对象。此外,不变性在多线程情况下不易出错。

暮色呼如

默认情况下,Java 没有存储值大于 long 值的数据类型(关键字)。有一种对象类型,您可以随心所欲地存储值 - 只要您的系统的 RAM 可以处理它,即 BigInteger 和 BigDecimal。不幸的是,没有类似的内置类BigInteger不是不可变的。更改 BigInteger 对象中的值的唯一方法是重新分配它,这意味着每次要更改值时都创建一个实例。但是,如果您在短时间内多次更改该值,这可能会降低性能。您可以创建一个String变量,如果有更改,您可以重新分配它,然后最后您可以重新分配 BigInteger 对象。简短的回答,没有。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java