Jadi saya mendeklarasikan dan menginisialisasi array int:
static final int UN = 0;
int[] arr = new int[size];
for (int i = 0; i < size; i++) {
arr[i] = UN;
}
Katakan saya melakukan ini sebagai gantinya ...
int[] arr = new int[5];
System.out.println(arr[0]);
... 0
akan mencetak ke standar keluar. Juga, jika saya melakukan ini:
static final int UN = 0;
int[] arr = new int[5];
System.out.println(arr[0]==UN);
... true
akan mencetak ke standar keluar. Jadi bagaimana Java menginisialisasi array saya secara default? Apakah aman untuk berasumsi bahwa inisialisasi default adalah pengaturan indeks array 0
yang berarti saya tidak perlu mengulang array dan menginisialisasi itu?
Terima kasih.
java
arrays
initialization
Hristo
sumber
sumber
Jawaban:
Segala sesuatu dalam program Java tidak secara eksplisit diatur ke sesuatu oleh programmer, diinisialisasi ke nilai nol.
null
.0
.0.0
false
.'\u0000'
(yang desimal ekivalennya adalah 0).Saat Anda membuat larik sesuatu, semua entri juga menjadi nol. Jadi array Anda mengandung lima nol tepat setelah dibuat oleh
new
.Catatan (berdasarkan komentar): Java Virtual Machine tidak diharuskan untuk menghilangkan memori yang mendasari saat mengalokasikan variabel lokal (ini memungkinkan operasi stack yang efisien jika diperlukan) sehingga untuk menghindari nilai acak, Spesifikasi Bahasa Jawa memerlukan variabel lokal untuk diinisialisasi.
sumber
Dari Spesifikasi Bahasa Jawa :
sumber
null
.JLS dengan jelas mengatakan
Penginisialisasi array membuat array dan memberikan nilai awal untuk semua komponennya.
dan ini terlepas dari apakah array adalah variabel instan atau variabel lokal atau variabel kelas.
Nilai default untuk tipe primitif: docs
Untuk objek nilai defaultnya adalah
null
.sumber
Menurut java,
sumber
Thorbjørn Ravn Andersen menjawab untuk sebagian besar tipe data. Karena ada diskusi panas tentang array,
Mengutip dari jls spec http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.12.5 "komponen array diinisialisasi dengan nilai default ketika dibuat"
Saya pikir terlepas dari apakah array lokal atau instance atau variabel kelas akan dengan nilai default
sumber
Setiap kelas di Jawa memiliki konstruktor (konstruktor adalah metode yang dipanggil ketika objek baru dibuat, yang menginisialisasi bidang variabel kelas). Jadi ketika Anda membuat turunan kelas, metode konstruktor dipanggil saat membuat objek dan semua nilai data diinisialisasi pada waktu itu.
Untuk objek tipe array integer, semua nilai dalam array diinisialisasi ke 0 (nol) dalam metode konstruktor. Demikian pula untuk objek array boolean, semua nilai diinisialisasi ke false.
Jadi Java menginisialisasi array dengan menjalankan metode konstruktornya saat membuat objek
sumber
Java mengatakan bahwa panjang default dari array JAVA pada saat inisialisasi adalah 10.
Tetapi
size()
metode mengembalikan jumlah elemen yang dimasukkan dalam array, dan karena pada saat inisialisasi, jika Anda belum memasukkan elemen apa pun dalam array, itu akan mengembalikan nol.sumber