Nice programing

부울이 null인지 Java 확인

nicepro 2020. 11. 29. 12:15
반응형

부울이 null인지 Java 확인


부울이 null인지 여부를 어떻게 확인합니까? 그래서 "hideInNav"가 null이라는 것을 안다면. 더 이상 실행되지 않도록하려면 어떻게해야합니까? 아래와 같은 것이 작동하지 않는 것 같지만 그 이유는 무엇입니까?

boolean hideInNav = parent.getProperties().get("hideInNav", false);
String hideNavigation = hideInNav != null ? hideInNav : "";

boolean만 할 수 있습니다 true또는 false그것 때문에 기본 데이터 타입 (+이 boolean변수 디폴트 값입니다 false). Boolean을 사용하려면 대신 클래스 를 사용할 수 null있습니다. 부울은 참조 유형이므로 null부울 "변수"에 할당 할 수 있습니다 . 예:

Boolean testvar = null;
if (testvar == null) { ...}

A booleannull자바에 있을 수 없습니다 .

Boolean그러나 A null.

booleana에 값이 할당되지 않은 경우 (예 : 클래스의 구성원) false기본값이됩니다.


Java에서는 null객체 참조에만 적용됩니다. 이후 boolean원시적 형이다, 그것은 할당 할 수 없습니다 null.

귀하의 예제에서 컨텍스트를 얻는 것은 어렵지만에서 hideInNav반환 된 객체에 없으면 getProperties()(기본값?) 표시 한 (기본값?)이 될 것이라고 생각 false합니다. 나는 이것이 당신이보고있는 버그라고 생각합니다.는 false같지 null않으므로 hideNavigation빈 문자열을 얻습니까?

코드 샘플에 대한 더 많은 컨텍스트를 통해 더 나은 답변을 얻을 수 있습니다.


될 수있는 유일한 것은 null비 원시인입니다.

boolean만 보유 할 수있는 TRUE또는 FALSE원시적이다. 메모리 TRUE/ FALSE는 실제로 숫자 ( 01)입니다.

0 = 거짓

1 = 참

따라서 객체를 인스턴스화하면 null이됩니다. String str; // will equal null

반면에 프리미티브를 인스턴스화하면 기본값이 0으로 지정됩니다.

boolean isTrue; // will be 0

int i; // will be 0


boolean 기본 유형이므로 널이 될 수 없습니다.

박스형 Boolean은 null 일 수 있습니다.

이 함수는 a Boolean가 아닌 a 반환 할 수 boolean있으므로 결과를 Boolean-type 변수에 할당하면 null 여부를 테스트 할 수 있습니다.


null참조 유형에 지정된 값입니다. null참조가 개체의 인스턴스와 비슷하지 않음을 나타내는 예약 된 값입니다.

A boolean는 Object의 인스턴스가 아닙니다. 그것은 원시 타입과 같은 intfloat. 같은 방식으로 : int x값이 0이고 boolean x값이 false.

참고 URL : https://stackoverflow.com/questions/15937715/java-check-if-boolean-is-null

반응형