2013-08-28 2 views
6

* value.getFloat ("Value_Quotient", quotient_Float) == null * 일 때 문제가 발생하는 것으로 보입니다. 이 문제를 어떻게 해결할 수 있습니까?Java에서 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(); 
    }   
} 
+9

'float'은 'null'일 수 없습니다. 'Float'은 'null'일 수 있습니다. 가변적 인 기본 유형 또는 참조 유형입니까? –

+0

http://docs.oracle.com/javase/tutorial/java/data/autoboxing.html –

+0

원시적입니다. –

답변

18

floatprimitive 데이터 형식 아닌 object이다. 객체에 null 체크가 사용됩니다. 프리미티브의 경우 기본값 확인을 사용해야합니다. float의 경우 기본값은 0.0f입니다.

+0

[원시 데이터 형식] (http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html) – CRUSADER

4

사용할 수있는 Float 클래스가 있습니다. Float 개체는 데이터 형식이 float 인 개체 형식으로 null으로 확인할 수 있습니다. A Float 개체는 국회 의사당 F로 표시되고 float 데이터 형식은 작은 f를 갖습니다. 자바 프리폼의 쉽게 다시와 네 번째 두 사람 사이를 전환 할 수 있음을 의미 오토 박싱, 즉 :

float number = 0.56f; 
Float object = number; 

또는 주변의 다른 방법 :

Float object = new Float(1.43); 
float number = object; 

는 또한 방법에 Float 개체를 전달할 수 있습니다 float 데이터 유형이 예상되는 경우 또는 그 반대의 경우

어떤 이유로 든 기본값을 확인하지 않으면 Float에 null이 있는지 확인할 수 있습니다.

if (object != null) { 
    // do what you want to do 
} 
0

유용한 정보 (Java 8).

float 객체를 float 프리미티브에 할당 할 수 있습니다. 그리고 떠 원시적 인 0은 다음과 같이 확인할 수 있습니다 :

당신의 Float 객체가 NPE가

Float floatObj = null; 
    float floatPrim = floatObj; //NPE 

그래서

하나 여기주의의 원인이됩니다 원시적에 할당보다 널 그러나 경우

Float floatObj = new Float(0); 
    float floatPrim = floatObj; 

    if (floatPrim == 0) { 
     System.out.println("floatPrim is 0"); // will display message 
    } 

더 많은 것은, 명백하게 당신은 Float 객체에 == 연산자를 사용할 수 있습니다. 왜냐하면 autounboxing이 발생하기 때문입니다.

Float floatObj = new Float(0.0f); 

    if (floatObj == 0) { 
     System.out.println("floatObj is 0"); // will work 
    } 
관련 문제