在我的游戏中,您有钱。货币值存储在类型long
的变量中。
问题在于此变量最大值不够。
所以我想将其更改为BigInteger
,但这是一个不可变的类
而且我需要在同一位置存储和更新此值。
还有像BigInteger
这样的不可变的类吗?
答案 0 :(得分:3)
您可以为此目的使用BigInteger
,但我不了解不变性如何影响用例。
您可以对BigInteger
进行所有操作。例如:
BigInteger a = BigInteger.valueOf(100);
a = a.add(BigInteger.valueOf(200));
BigInteger b = a.multiply(BigInteger.valueOf(2));
由于不变性而发生的唯一变化是,每次拥有一个值时都需要创建一个新对象,但是可以用该值覆盖当前对象。此外,在多线程情况下,不变性不太容易出错。
答案 1 :(得分:0)
默认情况下,Java没有存储大于long值的数据类型(关键字)。
有一个对象类型,您可以存储任意多的值-只要系统的RAM可以处理它,那就是BigInteger和BigDecimal。
不幸的是,没有类似于BigInteger
的内置类,它不是不可变的。更改BigInteger对象中的值的唯一方法是重新分配它,这意味着每次您想更改该值时都创建一个实例。
但是,如果您在短时间内多次更改该值,则可能会降低性能。您可以创建一个String
变量,如果有更改,可以重新分配它,然后最后可以重新分配BigInteger对象。
简短回答,不。