如何检查双精度值是否为空?

2022-08-31 22:21:49

我正在查询数据库,我得到的一些结果为空。我将这些值设置为数据类型为双精度的变量。我们将变量称为“结果”。所以我尝试设置一个if语句,看看它等于Null,这当然不起作用。以下是我为if语句提供的代码:

if (results == null)
{
     results = 0;
}

我用这个代码得到的错误是:

The operator == is undefined for the argument type(s) double, null

有没有更好的方法来确定它是否为空?


答案 1

首先,Java不能为空,并且不能与Java进行比较。(该类型是基元(非引用)类型,基元类型不能为 null。doublenulldouble

接下来,如果调用 ResultSet.getDouble(...),则返回 not a ,记录的行为是 NULL(来自数据库)将返回为零。(请参阅上面链接的 javadoc。如果零是该列的合法值,则无济于事。doubleDouble

因此,您的选择是:

该方法将值作为 (假设列类型为 )传递,并记录为返回 NULL。(有关更多信息,本页记录了 SQL 类型到 Java 类型的默认映射,以及您应期望交付的实际类型。getObjectDoubledoublenullgetObject


答案 2

我建议使用非双精度作为您的类型,然后检查null。Double