web-dev-qa-db-fra.com

initialisation d'un tableau booléen dans java

J'ai ce code

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

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

98
leba-lev

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

Utilisez plutôt _boolean[]_ pour que toutes les valeurs par défaut soient false:

_boolean[] array = new boolean[size];
_

ou utilisez Arrays#fill() pour remplir le tableau entier 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 ligne _freq[Global.iParameter[2]] = false;_ telle que vous êtes aurait provoqué ArrayIndexOutOfBoundsException. Pour en savoir plus sur les tableaux en Java, consultez ce tutoriel Oracle de base .

275
BalusC

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

Tous les tableaux de Java sont initialisés à la valeur par défaut pour le type. Cela signifie que les tableaux d'ints sont initialisés à 0, les tableaux de booléens sont initialisés à faux et les tableaux de types de référence sont initialisés à null.

18
Jørgen Fogh

Les tableaux dans Java commencent à indexer à 0. Ainsi, dans votre exemple, vous faites référence à un élément qui se trouve 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 à peu près sûr que false est la valeur par défaut pour les booléens en Java, vous n'avez donc peut-être pas besoin d'initialiser.

Meilleures salutations

9
Big Endian

Ils seront initialisés à false par défaut. Dans Java, les tableaux sont créés sur le tas et une valeur par défaut est attribuée à chaque élément du tableau, en fonction de son type. Pour le type de données boolean, la valeur par défaut est false.

5
codaddict

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

Global.iParameter [2]:

Il devrait s'agir de la valeur const

2
oneat