Array adalah salah satu struktur data penting untuk setiap bahasa pemrograman. Tentu saja, bahasa yang berbeda mengimplementasikan dan memproses array secara berbeda.
Array yang disediakan dalam bahasa Java digunakan untuk menyimpan elemen berukuran tetap dari tipe yang sama.
Anda dapat mendeklarasikan variabel array, seperti angka[100] daripada langsung mendeklarasikan 100 variabel bebas angka0, angka1, ...., angka99.
Tutorial ini akan memperkenalkan Anda pada deklarasi, pembuatan dan inisialisasi array Java, dan memberi Anda kode yang sesuai.
Variabel array harus dideklarasikan terlebih dahulu sebelum array dapat digunakan dalam suatu program. Berikut ini adalah sintaks untuk mendeklarasikan variabel array:
dataType[]arrayRefVar;//首选的方法或dataTypearrayRefVar[];//效果相同,但不是首选方法
Catatan: Disarankan untuk menggunakan gaya deklarasi dataType[] arrayRefVar untuk mendeklarasikan variabel array. Gaya dataType arrayRefVar[] berasal dari bahasa C/C++ dan diadopsi di Java untuk memungkinkan pemrogram C/C++ memahami bahasa java dengan cepat.
Berikut adalah contoh kode untuk kedua sintaksis:
double[]myList;//首选的方法或doublemyList[];//效果相同,但不是首选方法
Bahasa Java menggunakan operator baru untuk membuat array.
arrayRefVar=newdataType[arraySize];
Pernyataan sintaksis di atas melakukan dua hal:
1. Buat array menggunakan dataType[arraySize].
2. Tetapkan referensi array yang baru dibuat ke variabel arrayRefVar.
Deklarasi variabel array dan pembuatan array dapat diselesaikan dalam satu pernyataan, seperti yang ditunjukkan di bawah ini:
dataType[]arrayRefVar=newdataType[arraySize];
Selain itu, Anda juga dapat membuat array menggunakan cara berikut.
dataType[]arrayRefVar={value0,value1,...,valuek};
Elemen array diakses berdasarkan indeks. Pengindeksan array dimulai dari 0, sehingga nilai indeks berkisar dari 0 hingga arrayRefVar.length-1.
Kemudian ketika array membuka ruang, Anda dapat mengoperasikannya dengan cara berikut:
Contoh: Definisikan array int
public class ArrayDemo { public static void main(String args[]) { int data[] = new int[3]; /*开辟了一个长度为3的数组*/ data[0] = 10; // 第一个元素 data[1] = 20; // 第二个元素 data[2] = 30; // 第三个元素 for(int x = 0; x < data.length; x++) { System.out.println(data[x]); //通过循环控制索引 } } }
Selain mendeklarasikan dan mengalokasikan ruang, array itu sendiri memiliki mode alokasi lain.
Contoh: Gunakan mode langkah demi langkah untuk membuka ruang array
public class ArrayDemo { public static void main(String args[]) { int data[] = null; data = new int[3]; /*开辟了一个长度为3的数组*/ data[0] = 10; // 第一个元素 data[1] = 20; // 第二个元素 data[2] = 30; // 第三个元素 for(int x = 0; x < data.length; x++) { System.out.println(data[x]); //通过循环控制索引 } } }
Namun perlu diingat bahwa array adalah tipe data referensi, sehingga ruang harus dialokasikan (diinstankan) sebelum array digunakan. Jika array tanpa ruang yang dialokasikan digunakan, pesan NullPointerException
pasti akan muncul:
public class ArrayDemo { public static void main(String args[]) { int data[] = null; System.out.println(data[x]); } }
Prinsip ini sama persis dengan yang telah dijelaskan sebelumnya.
Array pasti akan digunakan selama pengembangan, tetapi operasi seperti di atas jarang terjadi. Dalam pengembangan aktual di masa depan, konsep array akan lebih banyak digunakan, dan bila digunakan secara langsung, dalam banyak kasus ini hanyalah keluaran loop for.
Jenis elemen array dan ukuran array ditentukan, jadi saat memproses elemen array, kita biasanya menggunakan loop dasar atau loop foreach.
Contoh ini sepenuhnya mendemonstrasikan cara membuat, menginisialisasi, dan memanipulasi array:
publicclassTestArray{ publicstaticvoidmain(String[]args){ double[]myList={1.9,2.9,3.4,3.5}; //打印所有数组元素for(inti=0;i<myList.length;i++){ System.out.println(myList[i]+""); } //计算所有元素的总和doubletotal=0; for(inti=0;i<myList.length;i++){ total+=myList[i]; } System.out.println("Totalis"+total); //查找最大元素doublemax=myList[0]; for(inti=1;i<myList.length;i++){ if(myList[i]>max)max=myList[i]; } System.out.println("Maxis"+max); } }
Hasil kompilasi dan running dari contoh di atas adalah sebagai berikut:
1.9 2.9 3.4 3.5 Totalis11.7 Maxis3.5
JDK 1.5 memperkenalkan jenis perulangan baru, yang disebut perulangan foreach atau perulangan yang disempurnakan, yang melakukan perulangan pada array tanpa menggunakan subskrip.
Format sintaksnya adalah sebagai berikut:
for(type element: array){ System.out.println(element); }
Contoh ini digunakan untuk menampilkan semua elemen dalam array myList:
publicclassTestArray{ publicstaticvoidmain(String[]args){ double[]myList={1.9,2.9,3.4,3.5}; //打印所有数组元素for(doubleelement:myList){ System.out.println(element); } } }
Hasil kompilasi dan running dari contoh di atas adalah sebagai berikut:
1.9 2.9 3.4 3.5
Array dapat diteruskan sebagai parameter ke metode. Misalnya, contoh berikut adalah metode yang mencetak elemen dalam array int.
publicstaticvoidprintArray(int[]array){ for(inti=0;i<array.length;i++){ System.out.print(array[i]+""); } }
Contoh berikut memanggil metode printArray untuk mencetak 3, 1, 2, 6, 4 dan 2:
printArray(newint[]{3,1,2,6,4,2});
publicstaticint[]reverse(int[]list){ int[]result=newint[list.length]; for(inti=0,j=result.length-1;i<list.length;i++,j--){ result[j]=list[i]; } returnresult; }
Dalam contoh di atas, array hasil digunakan sebagai nilai kembalian fungsi.
Kelas java.util.Arrays dapat dengan mudah mengoperasikan array, dan semua metode yang disediakannya bersifat statis. Memiliki fungsi sebagai berikut:
Tetapkan nilai ke array: melalui metode pengisian.
Urutkan array: gunakan metode pengurutan, dalam urutan menaik.
Bandingkan array: Gunakan metode sama dengan untuk membandingkan apakah nilai elemen dalam array sama.
Mencari elemen array: Metode binerSearch dapat melakukan operasi pencarian biner pada array yang diurutkan.
Silakan lihat tabel di bawah untuk instruksi spesifik:
nomor seri | Metode dan instruksi |
---|---|
1 | public static int binerSearch(Object[] a, Object key) menggunakan algoritma pencarian biner untuk mencari objek dengan nilai tertentu (Byte, Int, double, dll.) dalam array yang diberikan. Array harus diurutkan sebelum dipanggil. Jika nilai pencarian terdapat dalam array, kembalikan indeks kunci pencarian; jika tidak, kembalikan (-( titik penyisipan ) - 1). |
2 | public static boolean sama dengan(long[] a, long[] a2) Mengembalikan nilai true jika dua array panjang yang ditentukan sama satu sama lain. Dua array dianggap sama jika mengandung jumlah elemen yang sama dan semua pasangan elemen yang bersesuaian di kedua array adalah sama. Dengan kata lain, dua array dikatakan sama jika berisi elemen yang sama dan urutan yang sama. Pendekatan yang sama berlaku untuk semua tipe data dasar lainnya (Byte, short, Int, dll.). |
3 | public static void fill(int[] a, int val) memberikan nilai int yang ditentukan ke setiap elemen dalam rentang tertentu dari array tipe int yang ditentukan. Pendekatan yang sama berlaku untuk semua tipe data dasar lainnya (Byte, short, Int, dll.). |
4 | public static void sort(Object[] a) mengurutkan array objek tertentu dalam urutan menaik sesuai dengan urutan alami elemen-elemennya. Pendekatan yang sama berlaku untuk semua tipe data dasar lainnya (Byte, short, Int, dll.). |