Array Objek di Java
⚡ Ringkasan Cerdas
Array Objek di Java Menyimpan referensi objek dalam slot berurutan berukuran tetap, memungkinkan satu variabel untuk menyimpan banyak instance dari suatu kelas dan mengakses masing-masing melalui indeks untuk iterasi, mutasi, dan penerusan ke metode.
Apa itu Array Objek dalam Java?
A Java susunan objek menyimpan beberapa instance objek dari kelas yang sama dalam satu wadah berukuran tetap. Tidak seperti array primitif yang menyimpan nilai seperti int, double, atau boolean Langsung di setiap slot, sebuah array objek menyimpan referensiSetiap slot menunjuk ke lokasi memori suatu objek, dan objek itu sendiri berada di slot tersebut. Java tumpukan.
Tata letak ini sesuai dengan cara objek apa pun variabel in Java Berfungsi. Array hanya mengelompokkan beberapa referensi objek bersama-sama sehingga Anda dapat mengaksesnya berdasarkan indeks. Ini adalah pilihan alami ketika jumlah objek diketahui sebelumnya dan tidak berubah selama masa hidup program.
Sintaksis
ClassName[] obj = new ClassName[array_length];
Sisi kanan mengalokasikan ruang untuk array_length referensi, semuanya diinisialisasi ke nullTidak ada objek dari ClassName Yang ada hanyalah wadah yang dapat menyimpan referensi ke objek-objek tersebut.
Cara Membuat Array Objek di Java
Membuat array objek yang berfungsi selalu membutuhkan dua langkah alokasi. Langkah pertama mengalokasikan kontainer referensi, dan langkah kedua mengalokasikan setiap objek yang akan ditunjuk oleh kontainer tersebut. Lewatiping langkah kedua adalah sumber tunggal yang paling umum dari NullPointerException untuk pemula Java kode.
Langkah 1) Buka Anda editor kode lalu salin kode berikut:
class ObjectArray { public static void main(String args[]) { Account obj[] = new Account[2]; // obj[0] = new Account(); // obj[1] = new Account(); obj[0].setData(1, 2); obj[1].setData(3, 4); System.out.println("For Array Element 0"); obj[0].showData(); System.out.println("For Array Element 1"); obj[1].showData(); } } class Account { int a; int b; public void setData(int c, int d) { a = c; b = d; } public void showData() { System.out.println("Value of a = " + a); System.out.println("Value of b = " + b); } }
Langkah 2) Simpan file sebagai ObjectArray.javalalu kompilasi dan jalankan.
Langkah 3) Perhatikan kesalahannya. Cobalah untuk memperbaiki kesalahan tersebut sebelum melanjutkan ke Langkah 4.
Langkah 4) Periksa garisnya Account obj[] = new Account[2];Ini mengalokasikan sebuah array yang berisi dua variabel referensi bertipe Account, tetapi tidak mengalokasikan apa pun Account benda. Kedua slot dapat menampung null, dan memanggil obj[0].setData(...) pada null referensi melempar NullPointerException saat berjalan.
Langkah 5) Hapus tanda komentar pada baris 4 dan 5. Kedua baris ini menciptakan sesuatu yang nyata. Account objek dan menetapkannya ke obj[0] ke obj[1]Array tersebut sekarang menyimpan referensi yang sebenarnya, dan kode berjalan dengan lancar.
Keluaran:
For Array Element 0 Value of a = 1 Value of b = 2 For Array Element 1 Value of a = 3 Value of b = 4
Cara Menginisialisasi Array Objek di Java
Selain inisialisasi berbasis setter yang ditunjukkan di atas, sebuah array objek dapat diinisialisasi dengan tiga cara yang lebih rapi. Setiap gaya mengorbankan kerumitan demi kejelasan, jadi pilihlah yang paling sesuai dengan situasi Anda.
- Inisialisasi loop — alokasikan array, lalu telusuri setiap indeks dan tetapkan objek baru. Ini adalah pola standar untuk array besar atau ketika jumlah objek bersifat dinamis.
- Inisialisasi konstruktor — meneruskan nilai langsung ke konstruktor pada saat pembuatan sehingga tidak diperlukan panggilan setter terpisah.
- Inisialisasi literal array — mendeklarasikan dan mengisi dalam satu pernyataan dengan inline
{ ... }Inisialisasi, ideal untuk himpunan tetap kecil.
class Account { int a, b; public Account(int a, int b) { // constructor this.a = a; this.b = b; } } public class InitDemo { public static void main(String[] args) { // 1) Loop initialisation Account[] loopArr = new Account[3]; for (int i = 0; i < loopArr.length; i++) { loopArr[i] = new Account(i, i * 10); } // 2) Constructor initialisation, one slot at a time Account[] ctorArr = new Account[2]; ctorArr[0] = new Account(1, 2); ctorArr[1] = new Account(3, 4); // 3) Array literal initialisation Account[] litArr = { new Account(5, 6), new Account(7, 8), new Account(9, 10) }; System.out.println("loop size = " + loopArr.length); System.out.println("ctor size = " + ctorArr.length); System.out.println("literal size= " + litArr.length); } }
Inisialisasi loop adalah pengaturan default teraman karena menjamin tidak ada slot yang tersisa. nullInisialisasi konstruktor membuat maksud menjadi eksplisit ketika setiap objek membutuhkan argumen yang berbeda, dan literal array menjaga agar kode demo kecil tetap ringkas. Jangan mencampur gaya di dalam array yang sama kecuali Anda memiliki alasan: konsistensi membuat bug lebih mudah ditemukan.
Mengiterasi dan Mengakses Elemen dalam sebuah Java Array Objek
Setelah sebuah array objek terisi, tiga pola mencakup hampir semua kebutuhan akses. Pilih gaya perulangan yang sesuai dengan seberapa banyak kontrol yang dibutuhkan kode terhadap indeks.
klasik for lingkaran memberikan akses ke indeks, yang berguna untuk mengganti elemen, membandingkan tetangga, atau mengulangi subrentang.
for (int i = 0; i < obj.length; i++) { System.out.println("Element " + i); obj[i].showData(); }
ditingkatkan for lingkaran (Perulangan “for-each”) menyembunyikan indeks dan terbaca lebih alami ketika indeks tidak dibutuhkan:
for (Account acc : obj) {
acc.showData();
}
Aliran (Java 8 dan seterusnya) mengubah array menjadi pipeline, yang berguna untuk penyaringan, pemetaanpingatau melakukan agregasi tanpa menulis perulangan:
import java.util.Arrays;
Arrays.stream(obj)
.filter(acc -> acc.a > 0)
.forEach(Account::showData);
Untuk membaca atau memperbarui satu elemen, gunakan akses indeks langsung, misalnya obj[1].setData(10, 20)Selalu periksa panjangnya terlebih dahulu dengan obj.length menghindari ArrayIndexOutOfBoundsException. Ketika slot apa pun bisa null, lindungi akses dengan pemeriksaan null atau Optional agar program tetap berjalan dan tidak mengalami kerusakan.
Array Objek vs ArrayList Objek dalam Java
Array objek biasa cepat dan mudah diprediksi, tetapi ukurannya yang tetap menjadi batasan begitu jumlah objek berubah saat runtime. JavaKerangka kerja Koleksi menyediakan ArrayList sebagai alternatif dinamis. Tabel di bawah ini menyoroti kapan setiap pilihan tepat digunakan.
| Fitur | Array Objek | ArrayList Objek |
|---|---|---|
| Ukuran | Tetap pada saat pembuatan | Membesar dan menyusut secara otomatis |
| Pernyataan | Account[] a = new Account[5]; | List<Account> list = new ArrayList<>(); |
| Akses elemen | a[i] | list.get(i) |
| Tambahkan elemen | Tidak didukung setelah pembuatan | list.add(obj) |
| Ketik keamanan | Diketik pada waktu kompilasi berdasarkan deklarasi | Generik diberlakukan pada waktu kompilasi. |
| Performance | Pembacaan terindeks yang sedikit lebih cepat | Penambahan amortisasi O(1), beberapa overhead per elemen |
| Lebih disukai ketika | Ukuran sudah diketahui dan tetap. | Ukuran tidak diketahui atau berubah saat dijalankan. |
Gunakan array ketika penggunaan memori yang terbatas dan pengindeksan yang dapat diprediksi menjadi penting, misalnya dalam tata letak matriks atau jalur pemrosesan yang sangat penting bagi kinerja. Pilihlah array. ArrayList Dalam sebagian besar kode aplikasi sehari-hari, karena kemampuan untuk menambah dan menghapus tanpa alokasi ulang lebih penting daripada biaya tambahan per elemen yang kecil.



