Memulakan Array di Java

1. Gambaran keseluruhan

Dalam tutorial ringkas ini, kita akan melihat pelbagai cara di mana kita dapat menginisialisasi array dan perbezaan yang halus antara kedua-duanya.

2. Satu Elemen pada Satu Masa

Mari kita mulakan dengan kaedah berasaskan gelung yang mudah:

for (int i = 0; i < array.length; i++) { array[i] = i + 2; }

Dan mari kita lihat juga bagaimana kita dapat memulakan satu elemen pelbagai dimensi pada satu masa:

for (int i = 0; i < 2; i++) { for (int j = 0; j < 5; j++) { array[i][j] = j + 1; } }

3. Pada Masa Pengisytiharan

Sekarang mari kita memulakan array pada saat pengisytiharan:

String array[] = new String[] { "Toyota", "Mercedes", "BMW", "Volkswagen", "Skoda" };

Semasa membuat susunan, kami tidak perlu menentukan jenisnya:

int array[] = { 1, 2, 3, 4, 5 };

Perhatikan bahawa tidak mungkin untuk memulakan array setelah deklarasi menggunakan pendekatan ini. Percubaan untuk melakukannya akan menyebabkan kesalahan penyusunan.

4. Menggunakan Arrays.fill ()

The java.util.Arrays kelas mempunyai beberapa kaedah dinamakan kenyang () yang menerima pelbagai jenis hujah-hujah dan mengisi pelbagai keseluruhan dengan nilai yang sama:

long array[] = new long[5]; Arrays.fill(array, 30);

Kaedah ini juga mempunyai beberapa alternatif yang menetapkan julat array ke nilai tertentu:

int array[] = new int[5]; Arrays.fill(array, 0, 3, -50);

Perhatikan bahawa kaedah ini menerima susunan, indeks elemen pertama, bilangan elemen, dan nilainya.

5. Menggunakan Arrays.copyOf ()

Kaedah Arrays.copyOf () membuat array baru dengan menyalin array lain. Kaedah ini mempunyai banyak kelebihan yang menerima pelbagai jenis hujah.

Mari lihat contoh ringkas:

int array[] = { 1, 2, 3, 4, 5 }; int[] copy = Arrays.copyOf(array, 5);

Beberapa nota di sini:

  • Kaedah ini menerima susunan sumber dan panjang salinan yang akan dibuat
  • Sekiranya panjangnya lebih besar daripada panjang array yang akan disalin, maka elemen tambahan akan dimulakan dengan menggunakan nilai lalai mereka
  • Sekiranya array sumber belum diinisialisasi, maka NullPointerException akan dilemparkan
  • Sekiranya panjang array sumber negatif, maka NegativeArraySizeException dilemparkan

6. Menggunakan Arrays.setAll ()

Kaedah Arrays.setAll () menetapkan semua elemen larik menggunakan fungsi penjana:

int[] array = new int[20]; Arrays.setAll(array, p -> p > 9 ? 0 : p); // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

Sekiranya fungsi penjana adalah nol, maka NullPointerException akan dilemparkan.

7. Menggunakan ArrayUtils.clone ()

Akhirnya, mari kita gunakan API ArrayUtils.clone () dari Apache Commons Lang 3 - yang memulakan array dengan membuat salinan langsung array lain:

char[] array = new char[] {'a', 'b', 'c'}; char[] copy = ArrayUtils.clone(array);

Perhatikan bahawa kaedah ini berlebihan untuk semua jenis primitif.

8. Kesimpulannya

Dalam artikel ini, kami telah meneroka pelbagai cara untuk memulakan array di Java.

Seperti biasa, versi penuh kod boleh didapati di GitHub.