如何检查BigInteger是否为null

时间:2015-06-26 11:51:21

标签: java biginteger compareto

我有一个可以为BigInteger指定null的代码。我需要检查它是否为空。

我已尝试过以下事项,但它们无效:

  1. ==只检查参考,而不是值。

    BigInteger x = BigInteger.ONE;
    
    if(x== null)
    {
        System.out.println( x );
    }
    
  2. 上面的输出是打印x。 (不管怎样,布尔条件都满足,即使x不为空)。

    1. 以下在比较

      时给出NullPointerException
      BigInteger x = BigInteger.ONE;
      BigInteger myNull = null;
      
      if(x.compareTo(myNull) == 0 )
      {
          System.out.println( x );
      }
      
    2. 另一个NPE:

      BigInteger x = BigInteger.ONE;
      
      if(x.compareTo(null) == 0)
      {
          System.out.println( x );
      }
      
    3. 如何检查BigInteger是否正确无效?

2 个答案:

答案 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