Array array

T: Bagaimana cara menggunakan array array?

SEBUAH:

String s = new String ("Halo, Dunia"); // s adalah referensi String, yang merujuk ke // objek String dengan nilai "Hello, World." s = String baru ("Guten Tag, Welt"); // Referensi String yang sama sekarang merujuk // ke objek String yang berbeda; artinya, // satu referensi merujuk ke dua // objek yang berbeda (secara berurutan). // (Perhatikan bahwa kita sekarang memiliki objek String // dengan nilai "Hello, World", yang tidak memiliki // referensi; oleh karena itu objek ini memenuhi syarat // untuk dikumpulkan dari sampah) String t; // t adalah referensi String dengan nilai null // (tidak mengacu pada objek apa pun). // Jika Anda mencoba menggunakan t pada saat ini, misalnya dengan // mengatakan int len ​​= t.length; Anda akan mendapatkan // NullPointerException (harus dinamai // NullReferenceException). t = s;// Referensi String t sekarang merujuk ke // objek yang sama yang dirujuk oleh referensi String s, // yaitu objek String dengan nilai "Guten Tag, Welt". // Jadi di sini kita memiliki dua // referensi ke satu objek (secara bersamaan).

Array di Java adalah objek dengan sendirinya, apakah berisi primitif ( ints, chars, booleans, dan sebagainya) atau berisi objek lain. Ini berarti bahwa array dirujuk seperti objek lainnya, dengan tambahan []semantik agregasi / dereferensi. Berikut contohnya:

String [] sa; // sa adalah referensi null // mencoba mengakses sa.length menyebabkan NullPointerException. sa = String baru [2]; // sa bukan lagi referensi null, ia merujuk ke // objek tertentu yang merupakan larik dari dua referensi String null. // sa.length sekarang sama dengan 2 // (sa [0] dan sa [1] adalah dua referensi String null). sa [0] = "Halo, Dunia"; sa [1] = "Guten Tag, Welt"; // Sekarang sa mengacu pada larik dari dua referensi String bukan nol. sa = String baru [1]; // sa.length sama dengan 1 // Referensi yang sama sa sekarang mengacu pada array // (dan lebih pendek) yang berbeda. // sa [0] adalah referensi String null // mencoba mengakses sa [1] menyebabkan // ArrayIndexOutOfBoundsException. sa [0] = "Halo, Dunia"; // sa [0] sekarang bukan nol.

Pertanyaan Anda tentang array dapat dijawab dengan mempertimbangkan hal itu

String [] [] saa; saa [0] [0] = "Bantuan";

akan menyebabkan a NullPointerException, karena saamerupakan referensi null - yaitu, saatidak merujuk ke objek apa pun. Untuk menetapkan nilai ke elemen pertama dari larik pertama, saaharus merujuk ke larik dengan panjang lebih besar dari nol, dan saa[0]harus merujuk ke larik string bukan nol yang panjangnya juga lebih besar dari nol. Jadi, seseorang dapat memulai dengan mengatakan:

String [] [] saa; // saa adalah referensi null ke array string array // Mencoba saa.length sudah menyebabkan NullPointerException, // seperti mencoba saa [0]. saa = String baru [1] []; // saa sekarang mengacu pada larik dengan 1 referensi null ke String []. // saa.length sama dengan 1. // saa [0] adalah null. saa [0] = String baru [2]; // saa sekarang mengacu pada array 1 referensi bukan-null // ke String [] dengan panjang 2. // saa.length masih sama dengan 1. // saa [0] .length sama dengan 2 (tapi saa [0] [0] dan // saa [0] [1] keduanya nol). saa [0] [0] = "Halo, Dunia"; saa [0] [1] = "Guten Tag, Welt"; // Sekarang saa [0] [0] dan saa [0] [1] keduanya bukan nol.

Perhatikan bahwa Anda tidak bisa merujuk ke saa[0][0]hingga saa[0]bukan nol, dan Anda tidak bisa membuat bukan saa[0]nol sampai Anda membuat bukan saanol. Pada dasarnya, Anda harus membangun array array Anda secara bertahap.

Ada singkatan yang mudah digunakan untuk menginisialisasi referensi array:

String [] [] saa = {{{"Hello, World}, {" Guten Tag, Welt "}}}; // ini membuat objek String [] [] seperti yang dibuat // di atas, dan menetapkan saa ke merujuk ke objek itu. // Spasi putih dimaksudkan untuk menekankan bahwa // objek yang dibuat adalah larik dari satu String [] yang // berisi dua String. 

Dengan menggunakan singkatan ini, contoh kita dapat ditulis dengan benar sebagai:

String [] [] saa = {{{"Bantuan"}}}; 

Namun, ini membuat saamerujuk ke array string satu per satu. Perhatikan bahwa sintaks di atas hanya berfungsi saat menginisialisasi referensi array (inisialisasi adalah kasus khusus penugasan pada saat deklarasi). Cara yang lebih umum untuk membuat array baru dan menugaskannya ke referensi array baru atau yang sudah ada terlihat seperti ini (dalam kasus referensi yang sudah ada):

saa = String baru [] [] {// catat [] [] kosong - kompilator menghitung // ukuran keluar (kosong [] [] diperlukan). {{"Halo"}, {"Dunia"}} // ini adalah saa [0], // catat koma yang memisahkan saa [0] dan saa [1] {{"Guten Tag"}, {"Welt"} } // ini adalah saa [1]}; // sekarang saa.length = 2, dan saa [0] dan saa [1] juga masing-masing memiliki panjang 2
Random Walk Computing adalah butik konsultasi Java / CORBA terbesar di New York, yang berfokus pada solusi untuk perusahaan keuangan. Dikenal karena keahlian Java mereka yang terdepan, konsultan Random Walk menerbitkan dan berbicara tentang Java di beberapa forum yang paling dihormati di dunia.

Cerita ini, "Array of array", awalnya diterbitkan oleh JavaWorld.