Seperti halnya pada tipe data primitif, array juga dapat memegang objek-objek pada Java. Pada pembahasan sebelumnya, anda sudah mengetahui cara untuk membuat array dengan elemen dari tipe data primitif.

Nah, sekarang untuk membuat array dari objek, misalnya dari class PersegiPanjang, anda dapat melakukannya dengan:
PersegiPanjang myArray = new PersegiPanjang[10];
Pernyataan di atas akan membuat array yang dapat memegang referensi dari sepuluh objek dari class PersegiPanjang. Namun, pernyataan ini tidak membuat objek dari class itu sendiri. Objek-objek ini harus dibuat secara terpisah menggunakan konstruktor dari class PersegiPanjang.
Array myArray akan memiliki sepuluh ruang memori dimana sepuluh objek dari class itu akan disimpan. Jika anda mencoba untuk mengakses objek PersegiPanjang sebelum objek-objek itu dibuat maka runtime error akan terjadi.
NullPointerException juga dapat terlontar ketika dilakukan runtime seperti contoh di bawah ini:
class PersegiPanjang :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
public class PersegiPanjang { private double panjang; private double lebar; //Getter dan setter method untuk panjang public double getPanjang() { return panjang; } public void setPanjang(double panjang) { this.panjang = panjang; } //Getter dan setter method untuk lebar public double getLebar() { return lebar; } public void setLebar(double lebar) { this.lebar = lebar; } } |
class TestPersegiPanjang untuk mendemonstrasikan:
1 2 3 4 5 6 |
public class TestPersegiPanjang { public static void main (String args []){ PersegiPanjang [] myArray = new PersegiPanjang [10]; myArray[0].setPanjang(8.75); } } |
1 2 3 4 |
//Contoh <i>runtime exception</i> yang muncul: Exception in thread "main" java.lang.NullPointerException at TestPersegiPanjang.main(TestPersegiPanjang.java:4) Java Result: 1 |
Kenapa exception itu bisa muncul? Karena myArray[0] tidak mengarah pada objek PersegiPanjang. Jadi objek harus dibuat dengan menggunakan konstruktor dari class PersegiPanjang dan referensinya harus ditetapkan pada elemen array dengan pernyataan berikut:
myArray[0] = new PersegiPanjang();
Dalam hal ini misal menjadi:
1 2 3 4 5 6 7 |
public class TestPersegiPanjang { public static void main (String args []){ PersegiPanjang [] myArray = new PersegiPanjang [10]; myArray[0] = new PersegiPanjang(); myArray[0].setPanjang(8.75); } } |
myArray adalah variabel referensi dari objek PersegiPanjang. Jadi ketika anda membuat array objek dari class PersegiPanjang tersebut, sebenarnya anda lakukan adalah membuat array dari variabel referensi objeknya.
Perlu diingat bahwa ketika array dari objek-objek tersebut dibuat, menggunakan operator new, maka setiap elemen dalam array adalah merupakan variabel referensi objek dengan nilai defaultnya adalah null.
Cara Menginisialisasi Array Dari Objek Dengan Loop
Kembali lagi loop digunakan untuk menginisialisasi array, biasanya yang digunakan adalah for loop, seperti di bawah ini:
1 2 3 |
for (int i = 0; i < myArray.length; i++) { myArray[i] = new PersegiPanjang(); } |
Berikut ini adalah contoh program sederhana yang membuat array objek dari class PersegiPanjang, kemudian menampilkan hasil untuk perhitungan luas dan nilai rata-ratanya:
class PersegiPanjang
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
import java.util.Scanner; public class PersegiPanjang { private double panjang; private double lebar; static Scanner input = new Scanner(System.in); public PersegiPanjang(double panjang, double lebar){ this.panjang = panjang; this.lebar = lebar; } //Getter dan setter method untuk panjang public double getPanjang() { return panjang; } public void setPanjang(double panjang) { this.panjang = panjang; } //Getter dan setter method untuk lebar public double getLebar() { return lebar; } public void setLebar(double lebar) { this.lebar = lebar; } //Membuat array dari objek persegi panjang public static PersegiPanjang [] buatArrayPersegiPanjang(){ System.out.print("Berapa objek persegi panjang akan di buat? "); int jumlahObjek = input.nextInt(); System.out.println("***********************************************"); PersegiPanjang arrayPersegiPanjang [] = new PersegiPanjang [jumlahObjek]; for (int i = 0; i < arrayPersegiPanjang.length; i++){ System.out.print("Masukkan nilai panjang untuk " + "Persegi Panjang ke " + (i + 1) + ": "); double nilaiPanjang = input.nextDouble(); System.out.print("Masukkan nilai lebar untuk " + "Persegi Panjang ke " + (i + 1) + ": "); double nilaiLebar = input.nextDouble(); System.out.println("----------------------------------------------------------"); arrayPersegiPanjang[i] = new PersegiPanjang(nilaiPanjang, nilaiLebar); } return arrayPersegiPanjang; } //Menampilkan panjang, lebar dan luas untuk setiap objek persegi panjang public static void printArrayPersegiPanjang(PersegiPanjang arrayPersegiPanjang []){ System.out.printf("%-20s%-15s%-10s\n", "Panjang", "Lebar", "Luas"); for(int i = 0; i < arrayPersegiPanjang.length; i++){ double luas = arrayPersegiPanjang [i].getPanjang() * arrayPersegiPanjang[i].getLebar(); System.out.printf("%-20f%-15f%-10f\n", arrayPersegiPanjang[i].getPanjang(), arrayPersegiPanjang[i].getLebar(), luas); } System.out.println("***********************************************"); System.out.printf("%-20s%-10f\n", "Rata-rata luas persegi panjang adalah ", averageLuas(arrayPersegiPanjang)); } //Menghitung rata-rata luas persegi panjang public static double averageLuas(PersegiPanjang arrayPersegiPanjang[]){ double jumlahLuas = 0; for (int i = 0; i < arrayPersegiPanjang.length; i++){ jumlahLuas += (arrayPersegiPanjang[i].getPanjang() * arrayPersegiPanjang[i].getLebar()); } return jumlahLuas/arrayPersegiPanjang.length; } } |
class TestPersegiPanjang
1 2 3 4 5 6 7 8 9 10 11 |
import java.util.Scanner; public class TestPersegiPanjang { public static void main(String args []){ //Mendeklarasikan myArray PersegiPanjang myArray[]; //Membuat myArray myArray = PersegiPanjang.buatArrayPersegiPanjang(); //Menampilkan myArray dan rata-rata luas PersegiPanjang.printArrayPersegiPanjang(myArray); } } |
Contoh output:
Berapa objek persegi panjang akan di buat? 3
***********************************************
Masukkan nilai panjang untuk Persegi Panjang ke 1: 42.67
Masukkan nilai lebar untuk Persegi Panjang ke 1: 32.54
———————————————————-
Masukkan nilai panjang untuk Persegi Panjang ke 2: 12.67
Masukkan nilai lebar untuk Persegi Panjang ke 2: 8.65
———————————————————-
Masukkan nilai panjang untuk Persegi Panjang ke 3: 34.66
Masukkan nilai lebar untuk Persegi Panjang ke 3: 19.76
———————————————————-
Panjang Lebar Luas
42.670000 32.540000 1388.481800
12.670000 8.650000 109.595500
34.660000 19.760000 684.881600
***********************************************
Rata-rata luas persegi panjang adalah 727.652967
Leave a Reply