Jika sekumpulan data digabungkan dalam satu unit, hasilnya adalah suatu struktur data.  Data struktur dapat berupa struktur yang sangat kompleks, akan tetapi  dalam banyak aplikasi, data struktur yang cocok hanya terdiri dari  kumpulan data berurutan. Struktur data sederhana seperti ini bisa berupa  array atau record.
Istilah  "record" sebetulnya tidak digunakan pada Java. Suatu record pada  intinya mirip dengan objek pada Java yang hanya memiliki variabel  instansi tanpa metode instansi. Beberapa bahasa pemrograman lain yang  tidak mendukung objek biasanya mendukung record. Dalam bahasa C yang  bukan bahasa berorientasi objek, misalnya, memiliki tipe data record,  dimana pada C disebut "struct". Data pada record -- dalam Java, adalah  variabel instansi suatu objek -- disebut field suatu  record. Masing-masing item disebut nama field. Dalam Java, nama field  adalah nama variabel instansi. Perbedaan sifat dari suatu record adalah  bahwa item pada record dipanggil berdasarkan namanya, dan field yang  berbeda dapat berupa tipe yang berbeda. Misalnya, kelas 
Orang didefisikan sebagai :class Orang { String nama; int nomorID; Date tanggalLahir; int umur; }
maka objek dari kelas 
Orang bisa disebut juga sebagai record dengan 4 field. Nama fieldnya adalah nama, nomorID, tanggalLahir dan umur. Lihat bahwa tipe datanya berbeda-beda yaitu String, int, dan Date.Karena record hanya merupakan bagian lebih kecil dari objek, kita tidak akan bahas lebih lanjut di sini.
Seperti record, suatu array adalah kumpulan item. Akan tetapi, item pada record dipanggil dengan nama, sedangkan item pada array dinomori, dan masing-masing item dipanggil besarkan nomor posisi  pada array tersebut. Semua item pada array harus bertipe sama. Definisi  suatu array adalah : kumpulan item bernomor yang semuanya bertipe sama.  Jumlah item dalam suatu array disebut panjang array. Nomor posisi dari  array disebut indeks item tersebut dalam array. Tipe dari item tersebut disebut tipe dasar dari array.
Tipe  dasar suatu array bisa berupa tipe Java apa saja, baik berupa tipe  primitif, nama kelas, atau nama interface. Jika tipe dasar suatu array  adalah 
int, maka array tersebut disebut "array int". Suatu array bertipe String disebut "array String". Akan tetapi array bukan urutan int atau urutan String atau urutan nilai bertipe apapun. Lebih baik jika array adalah urutan variabel bertipe int atau String atau tipe lainnya.Seperti  biasa, ada dua kemungkinan kegunaan variabel : sebagai nama suatu  lokasi di memori, dan nama suatu nilai yang disimpan pada lokasi memori.  Setiap posisi pada array bersifat seperti variabel. Setiap posisi dapat  menyimpan nilai dengan tipe tertentu (yaitu tipe dasar array). Isinya  bisa diganti kapanpun. Nilai tersebut disimpan di dalam array. Array  merupakan kontainer bukan kumpulan nilai.
Item pada array (maksudnya setiap anggota variabel dalam array tersebut) sering juga disebut elemen array.  Dalam Java, elemen array selalu dinomori mulai dari nol. Yaitu, indeks  dari elemen pertama suatu array adalah nol. Jika panjang array adalah N,  maka indeks elemen terakhir adalah N-1. Sekali array dibuat, maka  panjangnya tidak bisa diubah lagi.
Dalam Java, array adalah objek. Ada beberapa konsekuensi yang lahir dari fakta ini. Array harus dibuat dengan operator 
new.  Variabel tidak bisa menyimpan array; variabel hanya bisa merujuk pada  array. Variabel lain yang bisa merujuk array juga bisa bernilai null  yang berarti ia tidak merujuk pada lokasi memori apapun. Seperti objek  lain, array juga bagian dari suatu kelas, di mana seperti kelas lain  adalah kelas turunan dari kelas Object. Elemen array pada dasarnya adalah variabel instansi dalam objek array, kecuali mereka dipanggil dalam indeksnya bukan namanya.Meskipun  array berupa objek, ada beberapa perbedaan antara array dan objek  lainnya, dan ada beberapa fitur khusus Java untuk membuat dan  menggunakan array.
Misalnya A adalah variabel yang merujuk pada suatu array. Maka indeks k  di dalam A bisa dipanggil dengan A[k]. Item pertama adalah A[0], yang  kedua adalah A[i], dan seterusnya. 
A[k]  adalah suatu variabel dan bisa digunakan seperti variabel lainnya. Kita  bisa memberinya nilai, bisa menggunakannya dalam ekspresi, dan bisa  diberikan sebagai parameter pada subrutin. Semuanya akan didiskusikan di  bawah nanti. Untuk sekarang ingat sintaks berikut,variabel_array [ekspresi_integer]untuk merujuk pada suatu array.
Meskipun setiap array merupakan suatu objek, kelas array tidak harus  didefinisikan sebelumnya. Jika suatu tipe telah ada, maka kelas array  dari tipe tersebut otomatis ada. Jika nama suatu tipe adalah 
TipeDasar, maka nama kelas arraynya adalah TipeDasar[]. Artinya, suatu objek yang diciptakan dari kelas TipeDasar[] adalah array dari item yang tiap itemnya bertipe TipeDasar. Tanda kurung "[]" dimaksudkan untuk mengingat sintaks untuk mengambil item di dalam suatu array. "TipeDasar[]" dibaca seperti "array TipeDasar". Mungkin perlu juga dijelaskan bahwa jika KelasA adalah kelas turunan dari KelasB maka KelasA[] otomatis menjadi kelas turunan KelasB[].Tipe dasar suatu array dapat berupa tipe apapun yang ada atau sudah didefinisikan pada Java. Misalnya tipe primitif 
int akan diturunkan kelas array int[]. Setiap elemen di dalam array int[] adalah variabel yang memiliki tipe int dan bisa diisi dengan nilai dengan tipe int. Dari kelas yang bernama String diturunkan tipe array String[]. Setiap elemen di dalam array String[] adalah variabel dengan tipe String, yang bisa diisi dengan nilai bertipe String. Nilai ini bisa null atau referensi ke objek yang bertipe String (dan juga kelas turunan dari String)Mari kita lihat contoh lebih konkrotnya menggunakan array bilangan bulat sebagai contoh pertama kita. Karena 
int[] adalah sebuah kelas, maka kita bisa menggunakannya untuk mendeklarasikan variabel. Misalnya,int[] daftar;
yang membuat variabel bernama 
daftar dengan tipe int[]. Variabel ini bisa menunjuk pada array int, akan tetapi nilai awalnya adalah null (jika merupakan variabel anggota suatu kelas) atau tak tentu (jika merupakan variabel lokal di dalam suatu metode). Operator new digunakan untuk membuat objek array baru, yang kemudian bisa diberikan kepada daftar. Sintaksnya sama seperti sintaks sebelumnya, yaitu :daftar = new int[5];
membuat array 5 buah integer. Lebih umum lagi, konstruktor "
new TipeDasar[N]" digunakan untuk membuat array bertipe TipeDasar[].  Nilai N di dalam kurung menyatakan panjang array, atau jumlah elemen  yang bisa ditampung. Panjang array adalah variabel instansi di dalam  objek array, sehingga array tahu berapa panjangnya. Kita bisa  mendapatkan panjang suatu array, misalnya daftar menggunakan daftar.length (akan tetapi kita tidak bisa mengubahnya)Hasil dari pernyataan "
daftar = new int[5];" dapat diilustrasikan sebagai berikutPerlu dicatat bahwa array integer secara otomatis diisi dengan nol.  Dalam Java, array yang baru dibuat akan selalu diisi dengan nilai  tertentu: nol untuk angka, false untuk boolean, karakter dengan nilai  Unicode 0 untuk char dan null untuk objek.
Elemen di dalam array 
daftar dapat dirujuk dengan daftar[0], daftar[1], daftar[2], daftar[3], dan daftar[4]  (ingat juga bahwa nilai indeks terbesar adalah panjangnya array  dikurang satu). Akan tetapi, referensi array sebetulnya lebih umum lagi.  Tanda kurung di dalam referensi array bisa berisi ekspresi apapun yang  nilainya suatu integer. Misalnya jika idks adalah variabel bertipe int, maka daftar[idks] dan daftar[2*idks+3] secara sintaks benar.Contoh berikut akan mencetak semua isi integer di dalam array 
daftar ke layar :for (int i = 0; i < daftar.length; i++) { System.out.println( daftar[i] ); }
Perulangan pertama adalah ketika i = 0, dan 
daftar[i] merujuk pada daftar[0]. Jadi nilai yang disimpan pada variabel daftar[0] akan dicetak ke layar. Perulangan kedua adalah i = 1, sehingga nilai daftar[i] dicetak. Perulangan berhenti setelah mencetak daftar[4] dan i menjadi sama dengan 5, sehingga kondisi lanjutan "i < daftar.length" tidak lagi benar. Ini adalah contoh umum dari menggunakan perulangan untuk mengolah suatu array.Penggunaan  suatu variabel dalam suatu program menyatakan lokasi di memori.  Pikirkan sesaat tentang apa yang akan komputer lakukan ketika ia  menemukan referensi ke elemen suatu array 
daftar[k] ketika program berjalan. Komputer harus menentukan lokasi memori di mana ia dijadikan referensi. Untuk komputer, daftar[k] berarti : "Ambil pointer yang disimpan di dalam variabel daftar.  Ikuti pointer ini untuk mencari objek array. Ambil nilai k. Pergi ke  posisi ke-k dari array tersebut, dan di sanalah alamat memori yang Anda  ingin."Ada dua hal yang bisa salah di sini. Misalnya nilai 
daftar adalah null. Dalam kasus ini, maka daftar  tidak memiliki referensi sama sekali. Percobaan merujuk suatu elemen  pada suatu array kosong adalah suatu kesalahan. Kasus ini akan  menampilkan pesan kesalahan "pointer kosong". Kemungkinan kesalahan  kedua adalah jika daftar merujuk pada suatu array, akan tetapi k berada di luar rentang indeks yang legal. Ini akan terjadi jika k < 0 atau jika k >= daftar.length.  Kasus ini disebut kesalahan "indeks array keluar batas". Ketika kita  menggunakan array dalam program, kita harus selalu ingat bahwa kedua  kesalahan tersebut mungkin terjadi. Dari kedua kasus di atas, kesalahan  indeks array keluar batas adalah kesalahan yang lebih sering terjadi.Untuk suatu variabel array, seperti variabel lainnya, kita bisa mendeklarasikan dan mengisinya dengan satu langkah sekaligus, misalnya :
int[] daftar = new int[5];Jika
daftar merupakan variabel lokal dalam subrutin, maka perintah di atas akan persis sama dengan dua perintah :int[] daftar; daftar = new int[5];
(Jika 
daftar adalah variabel instansi, tentukan kita tidak bisa mengganti "int[] daftar = new int[5];" dengan "int[] daftar; daftar = new int[5];" karena ini hanya bisa dilakukan di dalam subrutin)Array  yang baru dibuat akan diisi dengan nilai awal yang tergantung dari tipe  dasar array tersebut seperti dijelaskan sebelumnya. Akan tetapi Java  juga menyediakan cara untuk memberi isi array baru dengan daftar isinya.  Dalam pernyataan yang untuk membuat array, ini bisa dilakukan dengan  menggunakan penginisialiasi array (array initializer), misalny :
int[] daftar = { 1, 4, 9, 16, 25, 36, 49 };akan membuat array baru yang berisi 7 nilai, yaitu 1, 4, 9, 16, 25, 36, dan 49, dan mengisi 
daftar dengan referensi ke array baru tersebut. Nilai daftar[0] berisi 1, nilai daftar[1] berisi 4, dan seterusnya. Panjang daftar adalah 7, karena kita memberikan 7 nilai awal kepada array ini.Suatu  penginisialisasi array memiliki bentuk daftar angka yang dipisahkan  dengan koma dan diapit dengan tanda kurung kurawal {}. Panjang array  tersebut tidak perlu diberikan, karena secara implisit sudah bisa  ditentukan dari jumlah daftar angkanya. Elemen di dalam penginisialisasi  array tidak harus selalu berbentuk konstanta. Juga bisa merupakan  variabel atau ekspresi apa saja, asalkan nilainya bertipe sama dengan  tipe dasar array tersebut. Misalnya, deklarasi berikut membuat array  dari delapan jenis 
Color beberapa warna telah dibentuk dengan ekspresi "new Color(r,g,b);"Color[] palette = { Color.black, Color.red, Color.pink, new Color(0,180,0), // hijau gelap Color.green, Color.blue, new Color(180,180,255), // biru muda Color.white };
Inisialisasi array bentuk seperti ini hanya bisa digunakan dalam  deklarasi suatu variabel baru, akan tetapi tidak bisa digunakan seperti  operator pemberi nilai (=) di tengah-tengah suatu program. Akan tetapi  ada cara lain yang bisa digunakan sebagai pernyataan pemberian nilai  atau diberikan ke dalam subrutin. Yaitu menggunakan jenis lain dari  operator 
new  untuk membuat atau menginisialisasi objek array baru. (Cara ini agak  kaku dengan sintaks aneh, seperti halnya sintaks kelas anonim yang telah  didiskusikan sebelumnya). Misalnya untuk memberi nilai kepada suatu  variabel daftar, kita bisa menggunakan :daftar = new int[] { 1, 8, 27, 64, 125, 216, 343 };Sintaks umum dari bentuk operator
new seperti ini adalah,new TipeDasar [ ] { daftar_nilai_nilai }
Ini adalah suatu ekspresi yang isinya merupakan objek, dan bisa digunakan untuk banyak situasi di mana suatu objek dengan tipe 
TipeDasar dipentingkan. Misalnya buatTombol merupakan metode yang mengambil array String sebagai parameter, maka kita bisa menuliskanbuatTombol( new String[] { "Stop", "Jalan", "Berikut", "Sebelum" } );Catatan terakhir : untuk alasan sejarah, maka deklarasi,
int[] daftar;akan bernilai sama dengan
int daftar[];
di mana sintaks tersebut digunakan dalam bahasa C dan C++. Akan tetapi  sintaks alternatif ini tidak begitu masuk akan dalam Java, atau mungkin  lebih baik dihindari. Lagian, maksudnya adalah mendeklarasikan variabel  dengan tipe tertentu dan namanya adalah 
int[]. Akan lebih masuk akan untuk mengikuti siintaks "nama_tipe nama_variabel" seperti pada bentuk pertama.



0 comments:
Post a Comment
Silahkan berkomentar diblog ini. Komentar sesuai dengan artikel yang bersangkutan bisa lebih membantu teman-teman lainnya.
Terima Kasih