inizializzazione di un array booleano in java
Ho questo codice
public static Boolean freq[] = new Boolean[Global.iParameter[2]];
freq[Global.iParameter[2]] = false;
Qualcuno potrebbe dirmi cosa sto sbagliando esattamente qui e come lo correggerei? Ho solo bisogno di inizializzare tutti gli elementi dell'array in falso booleano. grazie
5 answers
Ho solo bisogno di inizializzare tutti gli elementi dell'array in falso booleano.
Utilizzare boolean[]
in modo che tutti i valori predefiniti siano 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);
Si noti inoltre che l'indice dell'array è basato su zero. La riga freq[Global.iParameter[2]] = false;
come hai lì causerebbe ArrayIndexOutOfBoundsException
. Per ulteriori informazioni sugli array in Java, consultare questo tutorial di base di Oracle.
L'array verrà inizializzato su false quando lo si alloca.
Tutti gli array in Java vengono inizializzati al valore predefinito per il tipo. Ciò significa che gli array di int sono inizializzati su 0, gli array di booleani sono inizializzati su false e gli array di tipi di riferimento sono inizializzati su null.
Gli array in Java iniziano l'indicizzazione a 0. Quindi nel tuo esempio ti riferisci a un elemento che si trova al di fuori dell'array di uno.
Probabilmente dovrebbe essere qualcosa come freq [Globale.iParametro[2] -1] = falso;
Dovresti scorrere l'array per inizializzarlo tutto, questa riga inizializza solo l'ultimo elemento.
In realtà, sono abbastanza sicuro che false sia predefinito per i booleani in Java, quindi potrebbe non essere necessario inizializzare affatto.
Cordiali saluti
Verranno inizializzati su false
per impostazione predefinita. In Java gli array vengono creati su heap e ad ogni elemento dell'array viene assegnato un valore predefinito a seconda del suo tipo. Per boolean
tipo di dati il valore predefinito è false
.
Freq booleano statico pubblico [] = nuovo booleano [Globale.iParametro[2]];
Globale.iParametro[2]:
Dovrebbe essere il valore const