JavaRush /Java Blog /Random-ID /Sesuatu tentang array di Java

Sesuatu tentang array di Java

Dipublikasikan di grup Random-ID
Halo! Sebelumnya, selama pelatihan, kami bekerja dengan objek tunggal (atau tipe primitif). Tapi bagaimana jika kita perlu bekerja bukan dengan satu objek, tapi dengan seluruh kelompok? Misalnya kita ingin membuat daftar ulang tahun seluruh karyawan di perusahaan kita. Seharusnya berisi, katakanlah, 30 baris dalam format: “Andrey Petrov, 25 Januari.” Struktur data khusus, array, akan membantu kita di sini. Jika kita membandingkan array dengan objek dari kehidupan nyata, strukturnya sangat mirip dengan brankas bank dengan sel: Sesuatu tentang array di Java - 1Array juga terdiri dari sel. Anda dapat memasukkan sesuatu ke dalam setiap sel. Dalam hal ini, untuk mengakses konten Anda perlu mengetahui nomor selnya. Array dibuat seperti ini:
public class Main {

   public static void main(String[] args) {

       String [] birthdays = new String[10]; // array of Java strings

   }
}
Di sini kita telah membuat array 10 sel. Anda dapat langsung memperhatikan beberapa fitur array:
  1. Ini menyimpan data dari tipe yang ditentukan secara ketat. Jika awalnya kita membuat array string String, kita tidak akan bisa menyimpan apa pun di dalamnya. Tipe data ditentukan saat membuat array. Hal inilah yang membedakannya dengan safe deposit box, dimana klien dapat menyimpan apapun yang diinginkannya.
  2. Array dapat menyimpan data bertipe primitif (misalnya, int), string ( String), atau objek dari kelas yang sama. Lebih tepatnya, bahkan bukan objek itu sendiri, tetapi tautan ke objek tersebut.
  3. Ukuran array harus ditentukan saat pembuatan. Anda tidak akan dapat menentukannya nanti atau mengubah ukurannya setelah pembuatan.
Java menunjukkan bahwa array sedang dibuat dengan menggunakan tanda kurung siku []di kedua sisi ekspresi. Mereka dapat ditentukan sebelum nama variabel referensi atau setelahnya - ini akan berfungsi:
//Java arrays of strings, two syntaxes
String [] birthdays = new String[10];
String birthdays [] = new String[10];
Jika Anda ingin menulis sesuatu ke dalam array, Anda perlu menentukan nomor sel di mana nilainya akan ditulis. Nomor sel array dimulai dari 0. Memulai dari nol adalah praktik umum dalam pemrograman. Semakin cepat Anda terbiasa, semakin baik :) Sesuatu tentang array di Java - 2Artinya, jika Anda ingin memberi nilai pada sel pertama array , caranya seperti ini:
public class Main {

   public static void main(String[] args) {

       String birthdays [] = new String[10];
       birthdays[0] = "Lena Eliseeva, March 12";
   }
}
Sekarang sel pertama dari array kita, yang berisi ulang tahun rekan kerja, berisi string dengan ulang tahun Lena. Dengan analogi, Anda dapat menambahkan nilai lain:
public class Main {

   public static void main(String[] args) {

       String birthdays [] = new String[10];
       birthdays[0] = "Lena Eliseeva, March 12";
       birthdays[1] = "Kolya Romanov, May 18";
       birthdays[7] = "Olesya Ostapenko, January 3";
   }
}
Harap diperhatikan: kami menambahkan tanggal lahir Olesya ke sel kedelapan (apakah Anda lupa mengapa sel No. 7 adalah sel kedelapan?). Meskipun semua sel lainnya tidak terisi. Tidak perlu menulis nilai ke dalam array secara berurutan - tidak ada batasan seperti itu. Di sisi lain, jika Anda menulis secara berurutan, akan lebih mudah untuk melacak jumlah sel yang kosong dan terisi, dan tidak akan ada “lubang” yang tersisa di array. Jika Anda ingin mendapatkan konten sel array, seperti sel bank, Anda perlu mengetahui nomornya. Ini dilakukan seperti ini:
public class Main {

   public static void main(String[] args) {

       String birthdays [] = new String[10];
       birthdays[0] = "Lena Eliseeva, March 12";
       birthdays[1] = "Kolya Romanov, May 18";
       birthdays[7] = "Olesya Ostapenko, January 3";

       String olesyaBirthday = birthdays[7];
       System.out.println(olesyaBirthday);
   }
}
Keluaran konsol:

Олеся Остапенко, 3 января
Kami membuat variabel Stringdan memberi tahu kompiler: “Temukan sel dengan indeks 7 dalam array birthdaysdan tetapkan nilai yang disimpan di sana ke variabel String olesyaBirthday.” Itulah tepatnya yang dia lakukan.

Panjang array Java

Saat bekerja dengan array, Anda dapat dengan mudah mengetahui panjangnya menggunakan properti khusus - length.
public class Main {

   public static void main(String[] args) {

       String birthdays [] = new String[10];
       birthdays[0] = "Lena Eliseeva, March 12";
       birthdays[1] = "Kolya Romanov, May 18";
       birthdays[7] = "Olesya Ostapenko, January 3";

       int birthdaysLength = birthdays.length;
       System.out.println(birthdaysLength);
   }
}
Keluaran konsol:

10
Catatan:Properti ini lengthmenyimpan ukuran array, bukan jumlah sel yang terisi. Array kami hanya menyimpan 3 nilai, tetapi ketika kami membuatnya, kami menentukan ukuran = 10. Ini adalah nilai yang dikembalikan oleh bidang tersebut length. Mengapa ini mungkin berguna? Misalnya, jika Anda ingin mencetak daftar semua ulang tahun ke konsol (untuk memastikan tidak ada yang lupa), Anda dapat melakukannya dalam satu putaran sederhana:
public class Main {

   public static void main(String[] args) {

       String birthdays [] = new String[10];
       birthdays[0] = "Lena Eliseeva, March 12";
       birthdays[1] = "Kolya Romanov, May 18";
       birthdays[2] = "Vika Ignatova, July 12";
       birthdays[3] = "Denis Kozlov, September 7";
       birthdays[4] = "Maxim Maslennikov, November 9";
       birthdays[5] = "Roman Baranov, August 14";
       birthdays[6] = "Valery Pyatkina, April 1";
       birthdays[7] = "Olesya Ostapenko, January 3";
       birthdays[8] = "Kostya Gurko, October 19";
       birthdays[9] = "Seryozha Naumov, May 3";

       for (int i = 0; i < birthdays.length; i++) {
           System.out.println(birthdays[i]);
       }
   }
}
Dalam loop kita membuat variabel iyang awalnya sama dengan nol. Pada setiap lintasan, kami mengambil sel dengan indeks i dari array kami dan mencetak nilainya ke konsol. Perulangan akan membuat 10 iterasi, dan nilai i akan meningkat dari 0 menjadi 9 - sesuai dengan indeks sel array kita! Dengan cara ini kita akan mencetak semua nilai dari birthdays[0]hingga ke konsol.Sebenarnya birthdays[9] , ada cara berbeda untuk membuat array. Misalnya, array angka intdapat dibuat seperti ini:
public class Main {

   public static void main(String[] args) {
       int numbers [] = {7, 12, 8, 4, 33, 79, 1, 16, 2};
   }
}
Metode ini disebut “inisialisasi cepat”. Cukup mudah karena kita segera membuat array dan mengisinya dengan nilai. Tidak perlu menentukan ukuran array secara eksplisit - kolom lengthakan terisi secara otomatis selama inisialisasi cepat.
public class Main {

   public static void main(String[] args) {
       int numbers [] = {7, 12, 8, 4, 33, 79, 1, 16, 2};
       System.out.println(numbers.length);
   }
}
Keluaran konsol:

9

Array Objek Java

Anda telah mendengar bahwa array objek dan array primitif disimpan dalam memori secara berbeda. Mari kita ambil contoh, sebuah array yang terdiri dari tiga objek Cat:
public class Cat {

   private String name;

   public Cat(String name) {
       this.name = name;
   }

   public static void main(String[] args) {

       Cat[] cats = new Cat[3];
       cats[0] = new Cat("Thomas");
       cats[1] = new Cat("Hippopotamus");
       cats[2] = new Cat("Philip Markovich");
   }
}
Ada beberapa hal yang perlu dipahami di sini:
  1. Dalam kasus primitif, array Java menyimpan banyak nilai tertentu (seperti angka int). Dalam kasus objek, array menyimpan banyak referensi. Array catsterdiri dari tiga sel, yang masing-masing berisi referensi ke suatu objek Cat. Masing-masing tautan menunjuk ke alamat di memori tempat objek tersebut disimpan.
  2. Elemen array disimpan dalam memori dalam satu blok. Hal ini dilakukan untuk akses yang lebih efisien dan cepat kepada mereka. Dengan demikian, tautan tersebut catsmenunjuk ke sebuah blok di memori tempat semua objek - elemen array - disimpan. A cats[0]- ke alamat tertentu dalam blok ini.
Sesuatu tentang array di Java - 3Penting untuk dipahami bahwa array tidak hanya dapat menyimpan objek, tetapi juga merupakan objek.

Array array atau array dua dimensi

Berdasarkan hal ini, kita dihadapkan pada pertanyaan - dapatkah kita membuat, misalnya, bukan array yang terdiri dari string atau angka, tetapi array yang terdiri dari array? Dan jawabannya adalah - ya, kita bisa! Sebuah array dapat menyimpan objek apa pun di dalamnya, termasuk array lainnya. Array seperti itu disebut dua dimensi. Jika digambarkan dalam sebuah gambar, maka akan terlihat sangat mirip dengan meja biasa. Misalnya, kita ingin membuat array yang akan menyimpan 3 array angka intdengan masing-masing 10 sel. Tampilannya akan seperti ini: Sesuatu tentang array di Java - 4Setiap baris mewakili array angka int. Array pertama berisi angka dari 1 hingga 10, array kedua - dari -1 hingga -10, array ketiga - sekumpulan angka acak. Masing-masing array ini disimpan dalam sel array dua dimensi kita. Inisialisasi array dua dimensi dalam kode terlihat seperti ini:
public static void main(String[] args) {
   Cat[][] cats = new Cat[3][5];
}
Array kucing dua dimensi kami menyimpan 3 array yang masing-masing terdiri dari 5 sel. Jika kita ingin meletakkan objek kita di sel ketiga dari array kedua, kita melakukannya seperti ini:
public static void main(String[] args) {
   Cat[][] cats = new Cat[3][5];
   cats[1][2] = new Cat("Fluff");
}
[1]menunjuk ke larik kedua, dan [2]menunjuk ke sel ketiga larik ini. Karena array dua dimensi terdiri dari beberapa array, untuk melintasinya dan mencetak semua nilai ke konsol (atau mengisi semua sel), kita memerlukan loop bersarang ganda:
for (int i = 0; i < cats.length; i++) {
   for (int j = 0; j < cats[i].length; j++) {
       System.out.println(cats[i][j]);
   }
}
Di loop luar (variabel i), kita bergiliran melintasi semua array yang membentuk array dua dimensi kita. Di loop dalam (variabel j) kami mengulangi semua sel dari setiap array. Hasilnya, objek cats[0][0](array pertama, sel pertama) akan ditampilkan pertama kali di konsol, dan objek kedua akan ditampilkan cats[0][1](array pertama, sel kedua). Ketika array pertama habis, , cats[1][0], cats[1][1]dan cats[1][2]seterusnya akan menjadi output. Omong-omong, inisialisasi cepat juga tersedia untuk array dua dimensi:
int[][] numbers = {{1,2,3}, {4,5,6}, {7,8,9}};
Biasanya, kita akan menulis array dua dimensi numberssebagai int[3][3], tetapi metode ini memungkinkan kita untuk segera menentukan nilainya. Mengapa array dua dimensi diperlukan? Misalnya, dengan bantuannya Anda dapat dengan mudah membuat ulang game terkenal "Battleship": Sesuatu tentang array di Java - 5Struktur lapangan bermain di "Battleship" sedemikian rupa sehingga dapat dengan mudah dijelaskan: array dua dimensi yang terdiri dari 10 array, masing-masing 10 sel . Anda membuat dua susunan seperti itu - untuk diri Anda sendiri dan lawan Anda:
int [][] seaBattle = new int[10][10];
int [][] seaBattle2 = new int[10][10];
Anda mengisi dengan beberapa nilai (misalnya angka atau tanda *) sel tempat kapal Anda berada, lalu Anda dan lawan secara bergiliran memanggil nomor sel tersebut:
  • pertempuran laut[6][5]!
  • Masa lalu! pertempuran laut2[6][6]!
  • Terluka!
  • pertempuran laut2[6][7]!
  • Terluka!
  • pertempuran laut2[6][8]!,
  • Terbunuh!

Sumber daya tambahan tentang array

Ingin tahu lebih banyak tentang array? Silakan simak artikel-artikel dibawah ini. Ada banyak informasi menarik dan berguna mengenai topik ini.
  1. Array di Java - artikel mendetail tentang array, pembuatan, inisialisasi, dan penggunaannya. Dengan contoh.
  2. Kelas Array dan penggunaannya - artikel ini menjelaskan beberapa metode kelasArray
  3. Array adalah kuliah JavaRush pertama yang didedikasikan untuk array.
  4. Array multidimensi - artikel mendetail tentang array multidimensi beserta contohnya.
  5. Mengembalikan array dengan panjang nol, bukan null - Penulis Pemrograman Efektif Joshua Bloch berbicara tentang cara mengembalikan array kosong dengan lebih baik.
Ini mengakhiri perkenalan pertama kita dengan array, tetapi ini hanyalah awal interaksi dengannya. Dalam kuliah berikut kita akan melihat cara-cara menarik untuk menggunakannya, dan juga mencari tahu apa saja fungsi bawaan Java agar lebih nyaman bekerja dengan struktur data ini :)
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION