initialisation d'un tableau booléen en java

102

J'ai ce code

public static Boolean freq[] = new Boolean[Global.iParameter[2]];
freq[Global.iParameter[2]] = false;

quelqu'un pourrait-il me dire ce que je fais exactement de mal ici et comment puis-je le corriger? J'ai juste besoin d'initialiser tous les éléments du tableau sur Boolean false. Merci

leba-lev
la source

Réponses:

285

J'ai juste besoin d'initialiser tous les éléments du tableau sur Boolean false.

Utilisez à la boolean[]place pour que toutes les valeurs par défaut soient false:

boolean[] array = new boolean[size];

Ou utilisez Arrays#fill()pour remplir tout le tableau avec Boolean.FALSE:

Boolean[] array = new Boolean[size];
Arrays.fill(array, Boolean.FALSE);

Notez également que l'index du tableau est basé sur zéro. La freq[Global.iParameter[2]] = false;ligne que vous avez là provoquerait ArrayIndexOutOfBoundsException. Pour en savoir plus sur les tableaux en Java, consultez ce didacticiel Oracle de base .

BalusC
la source
3
Le deuxième morceau de code est bénéfique pour le cas où nous voulons l'initialiser (le définir) sur toutes les valeurs vraies. Très bonne réponse!
despote
3
Je préfère inverser le nom de la variable et utiliser l'initialisation par défaut avec de fausses valeurs.
BalusC
Je suis en fait en faveur de Boolean[] arraycar il vous permet d'avoir trois états pour chaque élément: true, falseet null, ce qui est utile pour les cas où vous souhaitez noter que quelque chose est « non traité ».
Abhishek Divekar
20

Le tableau sera initialisé à false lorsque vous l'allouerez.

Tous les tableaux en Java sont initialisés à la valeur par défaut du type. Cela signifie que les tableaux d'entiers sont initialisés à 0, les tableaux de booléens sont initialisés à false et les tableaux de types référence sont initialisés à null.

Jørgen Fogh
la source
12
Il utilise Boolean, non boolean, donc il sera par défaut null.
BalusC
1
Correct. Je n'ai pas vu ça. Arrays.fill devrait faire l'affaire.
Jørgen Fogh
9

Les tableaux en Java commencent à indexer à 0. Ainsi, dans votre exemple, vous faites référence à un élément qui est en dehors du tableau par un.

Cela devrait probablement être quelque chose comme freq [Global.iParameter [2] -1] = false;

Vous auriez besoin de parcourir le tableau pour tout initialiser, cette ligne n'initialise que le dernier élément.

En fait, je suis presque sûr que false est la valeur par défaut pour les booléens en Java, vous n'aurez donc peut-être pas besoin d'initialiser du tout.

Meilleures salutations

Big Endian
la source
2
Il utilise Boolean, non boolean, donc il sera par défaut null.
BalusC
5

Ils seront initialisés falsepar défaut. En Java, les tableaux sont créés sur le tas et chaque élément du tableau reçoit une valeur par défaut en fonction de son type. Pour booleanle type de données, la valeur par défaut est false.

codaddict
la source
3
Il utilise Boolean, non boolean, donc il sera par défaut null.
BalusC
je voulais utiliser booléen, mon mauvais ... désolé pour l'erreur
leba-lev
2

public static Boolean freq [] = new Boolean [Global.iParameter [2]];

Global.iParameter [2]:

Cela devrait être une valeur const

une place
la source
1
ce n'est pas vrai. pourraient également être des variables. le problème est que vous utilisez Global.iParameter [2] pour accéder à la baie. mais les indices vont de 0 à seulement Global.iParameter [2] -1 !!
Karussell