inizializzazione di un array booleano in java


102

Ho questo codice

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

qualcuno potrebbe dirmi esattamente cosa sto facendo di sbagliato qui e come lo correggo? Ho solo bisogno di inizializzare tutti gli elementi dell'array su Boolean false. grazie

Risposte:


285

Ho solo bisogno di inizializzare tutti gli elementi dell'array su Boolean false.

Utilizzare boolean[]invece in modo che tutti i valori siano impostati su false:

boolean[] array = new boolean[size];

Oppure usa Arrays#fill()per riempire l'intero array con Boolean.FALSE:

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

Notare inoltre che l'indice dell'array è in base zero. La freq[Global.iParameter[2]] = false;linea che hai lì causerebbe ArrayIndexOutOfBoundsException. Per ulteriori informazioni sugli array in Java, consultare questo tutorial Oracle di base .


3
La seconda parte di codice è vantaggiosa nel caso in cui si desideri inizializzarla (impostarla) su tutti i valori veri. Bella risposta!
despota

3
Preferisco invertire il nome della variabile e utilizzare l'inizializzazione predefinita con valori falsi.
BalusC

Sono in realtà a favore di Boolean[] arrayquanto permette di avere tre stati per ogni elemento: true, falsee null, che è utile per i casi in cui si desidera notare che qualcosa è "non elaborato".
Abhishek Divekar

20

L'array verrà inizializzato su false quando lo si alloca.

Tutti gli array in Java vengono inizializzati sul valore predefinito per il tipo. Ciò significa che gli array di int vengono inizializzati a 0, gli array di booleani vengono inizializzati a false e gli array di tipi di riferimento vengono inizializzati a null.


12
Sta usando Boolean, no boolean, quindi verrà impostato automaticamente null.
BalusC

1
Corretta. Non l'ho visto. Arrays.fill dovrebbe fare il trucco.
Jørgen Fogh

9

Gli array in Java iniziano l'indicizzazione da 0. Quindi nel tuo esempio ti riferisci a un elemento che è al di fuori dell'array di uno.

Probabilmente dovrebbe essere qualcosa come freq [Global.iParameter [2] -1] = false;

Avresti bisogno di scorrere l'array per inizializzarlo tutto, questa riga inizializza solo l'ultimo elemento.

In realtà, sono abbastanza sicuro che false sia l'impostazione predefinita per i booleani in Java, quindi potrebbe non essere necessario inizializzare affatto.

I migliori saluti


2
Sta usando Boolean, no boolean, quindi verrà impostato automaticamente null.
BalusC

5

Verranno inizializzati per falseimpostazione predefinita. In Java gli array vengono creati su heap e ad ogni elemento dell'array viene assegnato un valore predefinito a seconda del tipo. Per il booleantipo di dati il ​​valore predefinito è false.


3
Sta usando Boolean, no boolean, quindi verrà impostato automaticamente null.
BalusC

volevo usare booleano,
colpa

2

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

Global.iParameter [2]:

Dovrebbe essere un valore const


1
questo non è vero. potrebbero essere anche variabili. il problema è che stai utilizzando Global.iParameter [2] per accedere all'array. ma gli indici vanno da 0 fino al solo Global.iParameter [2] -1 !!
Karussell
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.