int SIZE = 512;
p = new BigInteger(SIZE, 15, new Random());
q = new BigInteger(SIZE, 15, new Random());
r = new BigInteger(SIZE, 15, new Random());
n = p.multiply(q);
temp1=n;
n = n.multiply(r);
if (temp1.multiply(r)!=n) System.out.println("test");
我的代码在不应该打印test
时。为什么呢?
答案 0 :(得分:5)
您必须使用equals
来比较对象相等性。
!=
或==
比较参考资料。
BigInteger b0 = new BigInteger("0");
BigInteger b1 = new BigInteger("0");
System.out.println(b0 != b1);
System.out.println(!b0.equals(b1));
<强>输出强>
true
false
答案 1 :(得分:2)
根据这个实施:
public BigInteger multiply(BigInteger val) {
if (val.signum == 0 || signum == 0)
return ZERO;
int[] result = multiplyToLen(mag, mag.length,
val.mag, val.mag.length, null);
result = trustedStripLeadingZeroInts(result);
return new BigInteger(result, signum == val.signum ? 1 : -1);
}
temp1.multiply(r)
会返回新 BigInteger
对象,其地址与n
不同。
使用!temp1.multiply(r).equals(n)
。