私は、同等性をチェックするためのテストコードを書いています。私はJavaのdocをチェックして、BigInteger
は不変であると言います。静的ファクトリメソッドvalueOf
のドキュメントをチェックすると、すでにキャッシュされている不変インスタンスが返されるようです。だから、キャッシュされたインスタンスの場合、==はfalseを返します。以下はBigInteger.ValueOf()はキャッシュオブジェクトを返しますか?
BigInteger
でvalueOf
用のJavaドキュメントです:
値が指定された 長いのと同等の大整数を返します。この「静的ファクトリメソッド」は、頻繁に使用される BigIntegersの再利用が可能なため、 (long)コンストラクタよりも優先して提供されます。
以下のコードは無限ループに入っています。
public static void main(String[] args) {
while(true) {
BigInteger a = BigInteger.valueOf(100);
BigInteger c = BigInteger.valueOf(100);
if (a == c) {
break;
}
}
'=='テストの場合'.equals()'値の等しいかどうかのテスト – azurefrog
'equal()'を使って等しいかどうかを調べます。 – Li357
プリミティブ型の場合、 '=='は値を比較しますが、オブジェクトの場合は参照を比較します。 – Gendarme