4

私はjava.math.BigIntegerで遊んでいます。これが私のJavaクラスです。

public class BigIntegerTest{
   public static void main(String[] args) {
     BigInteger fiveThousand = new BigInteger("5000");
     BigInteger fiftyThousand = new BigInteger("50000");
     BigInteger fiveHundredThousand = new BigInteger("500000");
     BigInteger total = BigInteger.ZERO;
     total.add(fiveThousand);
     total.add(fiftyThousand);
     total.add(fiveHundredThousand);
     System.out.println(total);
 }
}

結果は だと思います555000。しかし、実際は0. なんで ?

4

2 に答える 2

14

BigIntegerオブジェクトは不変です。それらの値は、一度作成すると変更できません。

呼び出すと.add新しいBigInteger オブジェクトが作成されて返されます。その値にアクセスする場合は、格納する必要があります。

BigInteger total = BigInteger.ZERO;
total = total.add(fiveThousand);
total = total.add(fiftyThousand);
total = total.add(fiveHundredThousand);
System.out.println(total);

古いオブジェクトtotal = total.add(...)への参照を削除し、によって作成された新しいオブジェクトへの参照を再割り当てしているだけなので、言っても問題ありません)。 total.add

于 2012-08-29T10:18:04.077 に答える
2

これを試して

 BigInteger fiveThousand = new BigInteger("5000");
 BigInteger fiftyThousand = new BigInteger("50000");
 BigInteger fiveHundredThousand = new BigInteger("500000");
 BigInteger total = BigInteger.ZERO;

 total = total.add(fiveThousand).add(fiftyThousand).add(fiveHundredThousand);
 System.out.println(total);
于 2012-08-29T10:31:22.497 に答える