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