O que é o terceiro boolean estado em java?
Pergunta
Embora eu saiba que, por definição, um booleano consiste em apenas dois estados, verdadeiro ou falso.Eu queria saber qual é o valor que um boolean antes de ser inicializado com um desses estados.
Solução
Editar: Pela demanda popular:
A menos que você esteja usando o embrulhado boleano, que padroniza para NULL. - Sudhir.J
Outras dicas
Se for uma variável local, é um erro do compilador fazer referência a ele antes de ser inicializado. Se for um campo, ele é inicializado para falso.
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);
}
}
saídas
false
null
Eu sei que isso era mais filosófico de uma pergunta, mas graças à auto -box, você pode usar o Java como uma linguagem quase verdadeiramente OO (eu odeio ter tipos primitivos ... agora apenas se funcionasse ao contrário). No entanto, muda o comportamento quando você usa um objeto (para melhor IMO).
Não há terceiro estado.Como o @Yishai, disse, se você não atribuir um valor booleano campos padrão para false.As variáveis locais devem ser designados antes do uso:
Aceder a um local não inicializada variável irá resultar em um tempo de compilação erro
Ver o doc.
Nos tipos booleanos de Java, padrão para false.
Para sua informação, os padrões booleanos para os números falsos, primitivos, padrão para 0, 0L, 0F ou 0D, conforme apropriado, o CHAFULTS PARA ' 0', referências de objeto (como booleano) Padrão para NULL.
Isso também se aplica ao conteúdo das matrizes. (Um petcha comum é que uma variedade de objetos está inicialmente cheia de valores nulos)
Isso é falso
Se você tivesse algo como
boolean isTrue;
System.out.println(isTrue);
Você deve obter um erro de tempo de compilação porque o booleano não foi inicializado. Por padrão, ao tentar inicializar, ele será definido como false;