menginisialisasi array boolean di java

102

Saya memiliki kode ini

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

Bisakah seseorang memberi tahu saya apa yang sebenarnya saya lakukan salah di sini dan bagaimana cara memperbaikinya? Saya hanya perlu menginisialisasi semua elemen array ke Boolean false. Terima kasih

leba-lev
sumber

Jawaban:

285

Saya hanya perlu menginisialisasi semua elemen array ke Boolean false.

Gunakan boolean[]keduanya sehingga semua nilai ditetapkan secara default ke false:

boolean[] array = new boolean[size];

Atau gunakan Arrays#fill()untuk mengisi seluruh larik dengan Boolean.FALSE:

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

Perhatikan juga bahwa indeks array berbasis nol. The freq[Global.iParameter[2]] = false;garis seperti yang Anda sudah ada akan menyebabkan ArrayIndexOutOfBoundsException. Untuk mempelajari lebih lanjut tentang array di Java, lihat tutorial Oracle dasar ini .

BalusC
sumber
3
Potongan kode kedua bermanfaat untuk kasus ketika kita ingin menginisialisasi (mengaturnya) ke semua nilai sebenarnya. Jawaban yang bagus!
lalim
3
Saya lebih suka membalik nama variabel dan menggunakan inisialisasi default dengan nilai palsu.
BalusC
Saya benar-benar mendukung Boolean[] arraykarena memungkinkan Anda untuk memiliki tiga negara untuk setiap elemen: true, falsedan null, yang berguna untuk kasus-kasus di mana Anda ingin untuk dicatat bahwa ada sesuatu yang "tidak diproses".
Abhishek Divekar
20

Array akan diinisialisasi ke false saat Anda mengalokasikannya.

Semua array di Java diinisialisasi ke nilai default untuk tipe tersebut. Ini berarti bahwa array int diinisialisasi ke 0, array boolean diinisialisasi ke false dan array tipe referensi diinisialisasi ke null.

Jørgen Fogh
sumber
12
Dia menggunakan Boolean, bukan boolean, jadi defaultnya adalah null.
BalusC
1
Benar. Saya tidak melihat itu. Array.fill harus melakukan triknya.
Jørgen Fogh
9

Array di Java mulai mengindeks di 0. Jadi dalam contoh Anda, Anda merujuk ke elemen yang berada di luar array satu per satu.

Ini mungkin harus seperti freq [Global.iParameter [2] -1] = false;

Anda perlu melakukan loop melalui array untuk menginisialisasi semuanya, baris ini hanya menginisialisasi elemen terakhir.

Sebenarnya, saya cukup yakin bahwa false adalah default untuk boolean di Java, jadi Anda mungkin tidak perlu melakukan inisialisasi sama sekali.

Salam Hormat

Big Endian
sumber
2
Dia menggunakan Boolean, bukan boolean, jadi defaultnya adalah null.
BalusC
5

Mereka akan diinisialisasi falsesecara default. Dalam Java, array dibuat di heap dan setiap elemen array diberi nilai default tergantung pada tipenya. Untuk booleantipe data nilai defaultnya adalah false.

codaddict
sumber
3
Dia menggunakan Boolean, bukan boolean, jadi defaultnya adalah null.
BalusC
saya bermaksud menggunakan boolean, saya buruk ... maaf karena menyesatkan
leba-lev
2

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

Global.iParameter [2]:

Ini harus menjadi nilai const

oneat
sumber
1
ini tidak benar. bisa menjadi variabel juga. masalahnya adalah Anda menggunakan Global.iParameter [2] untuk mengakses array. tetapi indeks bergerak dari 0 hingga hanya Global.iParameter [2] -1 !!
Karussell