我正在查询数据库,我得到的一些结果为空。我将这些值设置为数据类型为double的变量。我们将变量称为“结果”。所以我尝试设置一个if语句来看它等于Null当然不起作用。以下是我对if语句的代码:
if (results == null)
{
results = 0;
}
我使用此代码获得的错误是:
对于参数类型double,null
,运算符==未定义有没有更好的方法来确定它是否为空?
答案 0 :(得分:47)
首先,Java double
不能为空,也不能与Java null
进行比较。 (double
类型是基本(非引用)类型,基元类型不能为空。)
接下来,如果您调用ResultSet.getDouble(...)
,返回double
而不是Double
,则记录的行为是NULL(来自数据库)将返回为零。 (参见上面链接的javadoc。)如果零是该列的合法值,则无济于事。
所以你的选择是:
使用ResultSet.wasNull()
在getDouble(...)
调用后立即测试(数据库)NULL ...或
使用ResultSet.getObject(...)
,并将结果输入Double
。
getObject
方法会将值作为Double
传递(假设列类型为double
),并记录为返回null
为NULL。 (有关更多信息,this page记录了SQL类型到Java类型的默认映射,因此记录了您应该期望getObject
提供的实际类型。)
答案 1 :(得分:34)
我建议使用Double而不是double作为你的类型然后你检查null。
答案 2 :(得分:6)
Java中的double原语永远不能为null。如果没有为它赋值,它将被初始化为0.0(除非声明一个局部双变量而没有赋值,但这会产生编译时错误。)
有关默认原始值here的更多信息。
答案 3 :(得分:4)
要说某些内容为“null”意味着它是对null值的引用。根据定义,基元(int,double,float等)不是引用类型,因此它们不能具有空值。在这种情况下,您需要找出数据库包装器将执行的操作。
答案 4 :(得分:4)
您如何获得“结果”的价值?你是通过ResultSet.getDouble()得到的吗?在这种情况下,您可以查看ResultSet.wasNull()
。
答案 5 :(得分:0)
您只需定义double变量的值并与之比较
例如。
double var1= 0, var2=0;
if(var1!= 0 && var2!= 0 ){
}
希望这对您有帮助!
答案 6 :(得分:-1)
我相信Double.NaN可能能够涵盖这一点。这是double包含的唯一'null'值。