문제

나는 정의상 부울은 두 상태, 참 또는 거짓으로 구성되어 있음을 알고 있습니다. 부울 이이 상태 중 하나로 초기화되기 전에 부울이 어떤 가치를 가지고 있는지 궁금했습니다.

도움이 되었습니까?

해결책

기본적으로 거짓으로 표시됩니다.

편집하다: 대중의 요구에 의해 :

포장 된 것을 사용하지 않는 한 부울, 기본값으로 널. - sudhir.j

다른 팁

로컬 변수 인 경우 초기화되기 전에 참조하는 컴파일러 오류입니다. 필드 인 경우 거짓으로 초기화됩니다.

public class NewMain {

    boolean foo;
    Boolean bar;

    public static void main(String[] args) {
        NewMain obj = new NewMain();

        obj.whatBoolean();
    }

    public void whatBoolean() {
        System.out.println(foo);
        System.out.println(bar);
    }
}

출력

false
null

나는 이것이 질문에 대한 철학적이라는 것을 알고 있지만,자가 옥싱 덕분에 Java를 거의 진정으로 OO 언어로 사용할 수 있습니다 (나는 원시 유형을 갖는 것을 싫어합니다 ... 이제 역시 작동하는 경우에만). 그러나 객체를 사용할 때 (더 나은 IMO를 위해) 동작을 변경합니다.

세 번째 상태는 없습니다. @yishai가 말했듯이, 값을 할당하지 않으면 부울 필드 기본값이 false. 사용하기 전에 로컬 변수를 할당해야합니다.

초기화되지 않은 로컬 변수에 액세스하면 컴파일 타임 오류가 발생합니다.

보다 문서.

Java 부울 유형에서 거짓으로 기본값.

참고로, 부울 기본값은 false로, 기본 숫자 기본값은 0, 0l, 0f 또는 0D로, 적절한 경우, char deaults to ' 0', 객체 참조 (부울) 기본값으로 null.

이것은 배열의 내용에도 적용됩니다. (일반적인 gotcha는 객체의 배열이 처음에는 널 값으로 가득 차 있다는 것입니다)

그것은이다 거짓

당신이 같은 것을 가지고 있다면

boolean isTrue;

System.out.println(isTrue);

부울이 초기화되지 않았으므로 컴파일 타임 오류가 발생해야합니다. 기본적으로 이것을 초기화하려고 할 때는 false로 설정됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top