我有一个可以为BigInteger指定null的代码。我需要检查它是否为空。
我已尝试过以下事项,但它们无效:
==
只检查参考,而不是值。
BigInteger x = BigInteger.ONE;
if(x== null)
{
System.out.println( x );
}
上面的输出是打印x。 (不管怎样,布尔条件都满足,即使x不为空)。
以下在比较
时给出NullPointerExceptionBigInteger x = BigInteger.ONE;
BigInteger myNull = null;
if(x.compareTo(myNull) == 0 )
{
System.out.println( x );
}
另一个NPE:
BigInteger x = BigInteger.ONE;
if(x.compareTo(null) == 0)
{
System.out.println( x );
}
如何检查BigInteger是否正确无效?
答案 0 :(得分:6)
null
引用与值为0的对象之间存在差异。要检查null
引用,请使用:
BigInteger value = getValue();
if (value != null) {
// do something
}
要检查值0,请使用:
BigInteger value = getValue();
if (!BigInteger.ZERO.equals(value)) {
// do something
}
要确保对象既不是null
引用也不是值0,请将两者结合起来:
BigInteger value = getValue();
if (value != null && !value.equals(BigInteger.ZERO)) {
// do something
}
2015-06-26:根据@ Arpit的评论编辑。
答案 1 :(得分:2)
.compareTo(arg)
为arg
,则 null
会抛出NullPointerException。
在调用方法之前,您应该检查arg
是否为null
。