Question

Alors que je sais que, par définition, un booléen se compose de seulement deux états, vrai ou faux. Je me demandais quelle valeur un booléen ont avant d'être initialisé avec un de ces états.

Était-ce utile?

La solution

par défaut à false.

Modifier À la demande:

  

sauf si vous utilisez le booléenne , qui par défaut est nulle. - sudhir.j

Autres conseils

Si elle est une variable locale, il est une erreur de compilateur pour faire référence avant qu'il ne soit initialisé. S'il est un champ, il est initialisé à false.

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);
    }
}

sorties

false
null

Je sais que cela a été plus philosophique d'une question, mais grâce à autoboxing vous pouvez utiliser Java comme presque vraiment langage OO (types primitifs Je déteste avoir ... maintenant que si elle travaillerait trop inverse). Il ne change cependant le comportement lorsque vous utilisez un objet (pour le meilleur OMI).

Il n'y a pas de troisième état. Comme l'a dit @Yishai, si vous ne donnez pas une valeur, les champs booléens par défaut à false. Les variables locales doivent être attribuées avant utilisation:

  

Accès à un non initialisée locale   variable entraînera une compilation   erreur

Voir la doc .

A défaut JAVA types booléens False.

FYI, par défaut booléennes à défaut de nombres primitive faux, à 0, 0L, 0f ou 0d comme valeurs par défaut appropriées, carbonisation à '\ 0', les références objet (tel Boolean) par défaut à null.

Cela vaut également pour le contenu des tableaux. (A gotcha commun est un tableau d'objets est initialement plein de valeurs nulles)

Il est false

Si vous aviez quelque chose comme

boolean isTrue;

System.out.println(isTrue);

Vous devriez obtenir une erreur de compilation parce que le booléen n'a pas été initialisé. Par défaut, lorsque vous essayez d'initialiser ce qu'il sera défini sur false;

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top