当涉及* value.getFloat(“Value_Quotient”,quotient_Float)== null *时,它遇到了问题。我该如何解决这个问题?
private void Store() {
quotient_Float = posture_error/time;
if(value.getFloat("Value_Quotient", quotient_Float)==null || quotient_Float < value.getFloat("Value_Quotient", quotient_Float))
{
editor.putFloat("Value_Quotient", quotient_Float);
editor.commit();
}
}
答案 0 :(得分:24)
float
是primitive
数据类型,而不是object
。 null检查用于对象。对于基元,您应该使用默认值检查。对于float,默认值为0.0f。
答案 1 :(得分:5)
您还可以使用Float课程。可以检查Float
对象的null
作为float
数据类型的对象表示。 Float
对象由国会大厦F表示,float
数据类型具有小f。 Java预先形成自动装箱,这意味着您可以轻松地在两者之间切换回第四个,即:
float number = 0.56f;
Float object = number;
或者相反:
Float object = new Float(1.43);
float number = object;
您还可以将Float
对象传递给期望float
数据类型的方法,或者相反。
如果检查默认值因任何原因无效,则可以检查Float
是否为空。
if (object != null) {
// do what you want to do
}
答案 2 :(得分:1)
可能有用的一些要点(Java 8)。
可以将Float对象分配给float原语。然后可以像这样检查浮点基元:
Float floatObj = new Float(0);
float floatPrim = floatObj;
if (floatPrim == 0) {
System.out.println("floatPrim is 0"); // will display message
}
但是,如果您的Float对象为null,则将其分配给基元将导致NPE
Float floatObj = null;
float floatPrim = floatObj; //NPE
所以在这里要小心
还有一件事,显然你可以在Float对象上使用==运算符,因为自动装箱会发生。
Float floatObj = new Float(0.0f);
if (floatObj == 0) {
System.out.println("floatObj is 0"); // will work
}