Deb*_*was 1 java numbers biginteger
我写了一个测试代码来检查相等性.我检查过Java doc,它说BigInteger是不可变的.检查静态工厂方法的文档,valueOf它看起来像返回已经缓存的不可变实例.那么为什么==在缓存的实例时返回false.
以下是适用valueOf于的Java文档BigInteger:
返回一个Big Integer,其值等于指定long的值.这种"静态工厂方法"优先于(长)构造函数提供,因为它允许重用常用的BigIntegers.
下面的代码将进入无限循环.
public static void main(String[] args) {
while(true) {
BigInteger a = BigInteger.valueOf(100);
BigInteger c = BigInteger.valueOf(100);
if (a == c) {
break;
}
}
Run Code Online (Sandbox Code Playgroud)
不可变仅表示实例化后值不能更改.
具体而言,这并不意味着JVM必须确保您创建的每个值只有一个副本.您可以创建许多具有相同内部状态的不可变对象,但它们仍然是不同的对象.比较这些==将返回,false同时equals()将返回true.
| 归档时间: |
|
| 查看次数: |
376 次 |
| 最近记录: |