инициализация логического массива в Java - PullRequest
96 голосов
/ 02 марта 2010

У меня есть этот код

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

Может кто-нибудь сказать мне, что именно я делаю здесь неправильно и как я могу это исправить? Мне просто нужно инициализировать все элементы массива в логическое значение false. спасибо

Ответы [ 5 ]

267 голосов
/ 02 марта 2010

Мне просто нужно инициализировать все элементы массива в логическое значение false.

Либо используйте boolean[], чтобы все значения по умолчанию были false:

boolean[] array = new boolean[size];

или используйте Arrays#fill(), чтобы заполнить весь массив Boolean.FALSE:

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

Также обратите внимание, что индекс массива равен нулю. Строка freq[Global.iParameter[2]] = false;, как вы там, будет вызывать ArrayIndexOutOfBoundsException. Чтобы узнать больше о массивах в Java, обратитесь к этому основному руководству по Oracle .

18 голосов
/ 02 марта 2010

Массив будет инициализирован как ложный, когда вы выделите его.

Все массивы в Java инициализируются значением по умолчанию для типа. Это означает, что массивы целочисленных значений инициализируются равными 0, массивы логических значений инициализируются равными false, а массивы ссылочных типов инициализируются равными нулю.

9 голосов
/ 02 марта 2010

Массивы в Java начинают индексирование с 0. Итак, в вашем примере вы ссылаетесь на элемент, который находится за пределами массива на единицу.

Вероятно, это должно быть что-то вроде freq [Global.iParameter [2] -1] = false;

Вам нужно было бы перебрать массив для инициализации всего этого, эта строка инициализирует только последний элемент.

На самом деле, я почти уверен, что для Java в булевых значениях по умолчанию используется значение false, поэтому вам вообще может не потребоваться инициализация.

С наилучшими пожеланиями

5 голосов
/ 02 марта 2010

По умолчанию они будут инициализированы до false. В Java массивы создаются в куче, и каждому элементу массива присваивается значение по умолчанию в зависимости от его типа. Для типа данных boolean значением по умолчанию является false.

2 голосов
/ 02 марта 2010

public static Boolean freq [] = новый логический [Global.iParameter [2]];

Global.iParameter [2]:

Это должно быть постоянное значение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...