1. Array dalam memori

Pada contoh sebelumnya, ilustrasinya sedikit tidak akurat.

Saat membuat larik (seperti saat membuat string), dua blok memori terpisah dialokasikan: satu untuk menyimpan larik ( wadah) itu sendiri dan blok kedua untuk variabel yang menyimpan alamatnya . Gambar di bawah ini mewakili klarifikasi ini:

Array dalam memori

Memori yang dialokasikan untuk larik 10 intelemen dan int[]variabel yang menyimpan alamat larik int, ditampilkan dalam warna hijau.

Sebagai perbandingan, variabel biasa intyang menyimpan nilai 199ditampilkan dengan warna biru.

Ini sedikit mengingatkan pada menyimpan string dalam memori, bukan begitu?

Itu benar, string. Dan sama seperti saat Anda bekerja dengan string, Anda dapat menetapkan variabel array satu sama lain:

Kode Penjelasan
int[] a = new int[10];
a[2] = 4;
a[7] = 9;
int[] b = a;

a[9] = b[2] + a[7];
Buat array 10 intelemen.
Tetapkan nilai 4ke sel dengan index 2.
Tetapkan nilai 9ke sel dengan index 7.
Di bvariabel, simpan alamat yang disimpan di avariabel.
Sekarang adan barahkan ke objek array yang sama di memori.
Di sel objek array dengan index 9, tulis jumlah nilai yang disimpan dalam sel 2(yang menyimpan value 4) dan 7(yang menyimpan value 9).

Objek array tetap berada di tempatnya, dan variabel aand bmenyimpan alamat yang sama (referensi) ke objek yang sama. Lihat gambarnya:

Array dalam memori 2

2. Lebih detail tentang bekerja dengan array

Anda dapat membuat array elemen dari jenis apa pun. Untuk melakukannya, cukup tuliskan tanda kurung siku setelah nama jenis. Secara umum, membuat array terlihat seperti ini:

type[] name = new type[number];

Di mana tipe adalah tipe elemen yang akan kita simpan di dalam array. Nama adalah nama variabel yang akan kita gunakan untuk merujuk ke array, dan angka adalah jumlah sel dalam array.

Contoh di atas adalah bentuk kanonis untuk membuat variabel array dan objek array. Pada kenyataannya, ini adalah dua entitas yang terpisah.

Anda dapat membuat variabel array secara terpisah dari objek array:

type[] name;
name = new type[number];

Dan satu hal lagi yang tidak kalah pentingnya:

Anda dapat menggunakan variabel atau bahkan seluruh ekspresi sebagai array indeks dan jumlah elemen array .

Contoh:

Kode Penjelasan
int n = 100;
int[] a = new int[n];
Buat array nelemen
int n = 100;
int[] a = new int[n * 2 + 3];
Buat array dengan 203elemen
int n = 100;
int[] a = new int[n];
a[n-1] = 2;
a[n-2] = 3;
a[n/5] = a[n-1] + a[n-2]


// a[99] = 2;
// a[98] = 3;
// a[20] = a[99] + a[98];
Penting:
Omong-omong, Anda harus menyadari bahwa jika Anda mencoba mengakses sel array menggunakan indeks yang tidak ada untuk array tersebut (dalam contoh kami, itu berarti bilangan bulat apa pun yang tidak berada dalam range ), maka program akan mogok 0..99dengan ArrayIndexOfBoundException, artinya indeks berada di luar batas array.

3. Panjang larik

Seperti yang Anda lihat pada contoh sebelumnya, Anda dapat membuat variabel array dengan sendirinya dan kemudian menetapkan nilai (referensi ke objek array) ke suatu tempat di dalam kode. Anda bahkan dapat melakukan ini:

Kode Penjelasan
int[] array;
if (a < 10)
   array = new int[10];
else
   array = new int[20];
Buat variabel array yang tipenya adalah int[]
Jika avariabelnya kurang dari 10,
maka buatlah array 10elemen.
Kalau tidak,
buat array 20elemen

Dan sekarang apa lagi yang bisa Anda lakukan dengan array seperti itu? Bagaimana Anda tahu berapa banyak elemen yang ada di dalamnya?

Untuk membantu hal ini, array memiliki properti khusus (variabel) bernama length. Anda dapat menemukan panjang array menggunakan ekspresi ini:

array.length;

Berikut arrayadalah nama variabel array dan lengthmerupakan nama properti array. Nilai properti lengthtidak dapat diubah: lengthproperti itu sendiri dapat ditugaskan ke variabel lain, tetapi tidak ada yang dapat ditugaskan padanya (jika Anda mencoba melakukan ini, program tidak akan dapat dikompilasi).

Kita dapat melanjutkan dengan contoh sebelumnya seperti ini:

Kode Penjelasan
int[] array;
if (a < 10)
   array = new int[10];
else
   array = new int[20];
for (int i = 0; i < array.length; i++)
{
   System.out.println(array[i]);
}
Buat variabel array yang tipenya adalah int[]
Jika avariabelnya kurang dari 10,
maka buatlah array 10elemen.
Kalau tidak,
buat array 20elemen
Ulangi semua elemen array: dari 0hingga panjangarray.length - 1

4. Rangkuman fakta tentang array di Java

Mari rekap apa yang kita ketahui tentang array:

Fakta 1. Sebuah array terdiri dari banyak sel.

Fakta 2. Anda mengakses sel tertentu dengan menggunakan nomornya (indeks).

Fakta 3. Semua sel memiliki tipe yang sama.

Fakta 4. Nilai awal semua sel adalah 0 (jika sel menyimpan angka), null(jika sel menyimpan referensi objek), atau false(jika sel menyimpan booleannilai). Anda akan mempelajari lebih lanjut tentang nilai default di bab ini .

Fakta 5. String[] list hanyalah deklarasi sebuah variabel. Ini tidak membuat wadah (objek larik) itu sendiri. Untuk menggunakan variabel, Anda harus terlebih dahulu membuat larik (wadah) dan menugaskannya ke variabel. Lihat contoh di bawah ini.

Fakta 6. Saat kita membuat objek array (container), kita harus menunjukkan ukurannya, yaitu berapa banyak sel yang dikandungnya. Ini dilakukan dengan pernyataan seperti: new TypeName[n];

Fakta 7 Panjang sebuah array dapat ditemukan dengan menggunakan .lengthproperti.

Fakta 8. Setelah membuat array, Anda tidak dapat mengubah jenis elemennya atau jumlah elemen yang disimpannya.

Kode Penjelasan
String s;
String[] list;
sadalah null
list_null
list = new String[10];
int n = list.length;
Variabel listmenyimpan referensi ke objek: array string yang terdiri dari 10elemen.
nadalah10
list = new String[0];

Sekarang listmengacu pada array 0elemen. Larik ada, tetapi tidak dapat menyimpan elemen apa pun.

list = null;
System.out.println(list[1]);
Pengecualian (kesalahan program) akan dilemparkan, yaitu program akan macet. listmenyimpan referensi kenull
list = new String[10];
System.out.println(list[10]);
Pengecualian array-out-of-bounds (kesalahan program) akan dihasilkan.
Jika a listmenyimpan 10elemen/sel, maka indeks yang valid adalah: 0 1 2 3 4 5 6 7 8 910elemen.