Buku "Java for all"

gambar Hai, habrozhiteli! Buku ini ditujukan untuk pemula.


Selama bertahun-tahun, bahasa Jawa telah menjadi salah satu yang paling populer dan dicari. Itu indah, efektif dan, yang paling penting, sangat produktif. Tapi, sayangnya, bukan yang termudah. Itulah sebabnya permintaan untuk programmer Java secara konsisten tinggi. Bahasa Jawa adalah berlian yang akan menghiasi bagasi pengetahuan dari setiap programmer. Dan belajar Java, seperti yang saya harapkan, para pembaca buku ini harus memastikan, tidak hanya berguna, tetapi juga menarik. Dasar dari buku ini adalah kursus kuliah, pada waktu yang berbeda, yang saya baca untuk master Fakultas Fisika Universitas Nasional Kiev dinamai Tarasa Shevchenko, sarjana dari fakultas teknik medis dari Universitas Teknik Nasional Ukraina "Institut Politeknik Kiev" dan mahasiswa berbagai program kursus. Bahan buku dan cara presentasi disesuaikan untuk semua orang yang ingin belajar Jawa tidak hanya di lembaga pendidikan, tetapi juga secara mandiri. Oleh karena itu, buku tersebut dapat digunakan sebagai tutorial.


Array


Array berarti serangkaian jenis nilai (variabel) yang sama, yang dapat diakses dengan nama umum. Bab ini dikhususkan untuk array.


Variabel milik satu array disebut elemen array ini. Untuk mengidentifikasi elemen array secara unik, Anda perlu mengetahui nama array dan posisi (penempatan) elemen dalam array. Posisi elemen dalam array ditentukan menggunakan indeks integer. Jumlah indeks yang diperlukan untuk mengidentifikasi elemen array disebut dimensi array. Array satu dimensi adalah array di mana elemen diidentifikasi menggunakan indeks tunggal.


Array satu dimensi


Lebih mudah untuk membayangkan array satu dimensi dalam bentuk rantai terurut atau urutan variabel (dari jenis yang sama). Untuk mendeklarasikan array satu dimensi, Anda harus menentukan tipe elemen-elemen array tersebut, nama array, dan juga jumlah elemen yang termasuk dalam array. Sintaks untuk mendeklarasikan array satu dimensi adalah:


[] =new []; 

Pertama, jenis elemen array ditunjukkan, dan setelah pengidentifikasi tipe diikuti oleh tanda kurung kotak kosong. Selanjutnya, nama array, operator penugasan, instruksi (operator) baru, sekali lagi jenis elemen array dan dalam kurung kotak ukuran array (jumlah elemen dalam array). Sebagai contoh, perintah int nums = new int [20] mendeklarasikan array num array 20 elemen.


Sebenarnya, perintah deklarasi array yang disajikan di sini adalah simbiosis dari dua perintah: perintah int [] nums, deklarasi variabel num dari tipe array integer (variabel array), dan instruksi int [20] baru, yang, pada kenyataannya, menciptakan array. Instruksi ini diberikan nilai variabel nums, dan sebagai hasil dari referensi array, ia ditulis ke variabel nums. Dengan kata lain, proses pembuatan array dapat dilakukan dengan dua perintah:


 int[] nums; nums=new int[20]; 

Selain itu, perintah-perintah ini dapat diposting dalam kode program - yaitu, kita dapat mendeklarasikan variabel array dan hanya kemudian, di tempat lain dalam kode, buat sebuah array (dan tulis tautan ke array ini dalam variabel array).


RINCIAN Sebelumnya, kami terutama berurusan dengan tipe dasar, atau primitif, (seperti int, char atau double). Variabel tipe dasar menyimpan nilai. Secara teknis, tampilannya seperti ini: spasi dialokasikan untuk variabel dalam memori, dan nilai variabel ditulis ke tempat ini. Tetapi ada cara lain untuk bekerja dengan data di mana variabel mengacu pada data. Inilah yang terjadi pada objek, dan array diterapkan. Sebenarnya ada array, tetapi kami tidak mendapatkan akses ke sana secara langsung, tetapi dengan bantuan perantara, yang merupakan variabel array. Nilai variabel array bukan array, tetapi alamat array. Oleh karena itu, membuat variabel array tidak berarti membuat array. Array dibuat secara terpisah. Kami akan menggambarkan situasi ini sebagai situasi di mana variabel array merujuk ke array. Setiap kali kita perlu mengakses array, kita akan mengakses variabel array yang merujuk ke array yang diberikan.
Meskipun sekilas skema semacam itu mungkin tampak berlebihan, namun demikian, ia memiliki kelebihan. Dan kita akan melihat ini.

Dalam kasus di mana tidak ada kesalahpahaman, kami akan mengidentifikasi variabel array dengan array.


Ketika mendeklarasikan variabel array, itu diperbolehkan untuk menunjukkan tanda kurung siku baik setelah pengenal tipe atau setelah nama array. Misalnya, alih-alih perintah int [] nums, Anda dapat menggunakan perintah int nums [].


Elemen array satu dimensi diakses melalui nama array dengan indeks elemen yang ditunjukkan dalam tanda kurung siku. Elemen array pengindeksan dimulai dari nol. Dengan demikian, referensi ke elemen pertama array nums akan terlihat seperti nums [0]. Jika ada 20 elemen dalam array, maka elemen terakhir dari array memiliki indeks 19, yaitu, instruksi untuk mengakses elemen terlihat seperti num [19].


Panjang array dapat ditemukan menggunakan properti panjang: nama array ditunjukkan dan, melalui titik, properti panjang. Misalnya, untuk mengetahui panjang array nums, Anda bisa menggunakan pernyataan nums.length. Kemudian referensi ke elemen terakhir dari array dapat ditulis sebagai nums [nums.length-1].


PEMBERITAHUAN Java menggunakan pemeriksaan otomatis untuk melihat apakah keluar dari array. Oleh karena itu, jika kode mengacu pada elemen array yang tidak ada, kesalahan terjadi.

Saat mendeklarasikan array, memori dialokasikan untuk itu. Di Jawa, elemen-elemen array secara otomatis diinisialisasi dengan nilai-nilai nol - sel-sel yang dipilih adalah nol, dan nilai-nilai sel-sel nol ini ditafsirkan tergantung pada jenis array. Tetapi Anda tidak harus bergantung pada inisialisasi otomatis tersebut. Adalah bijaksana untuk menginisialisasi elemen-elemen array secara eksplisit. Untuk melakukan ini, gunakan operator loop atau tentukan daftar nilai elemen saat mendeklarasikan array.


Untuk menginisialisasi array dengan daftar nilai ketika mendeklarasikan variabel array, setelah itu ditunjukkan (melalui operator penugasan) daftar nilai yang tertutup dalam kurung kurawal. Sebagai contoh:


 int[] data={3,8,1,7}; 

Di sini, data variabel dideklarasikan untuk array integer, array dibuat, dan tautan ke sana ditulis ke variabel ini. Ukuran array dan nilai-nilai elemen ditentukan secara otomatis sesuai dengan jumlah elemen dalam daftar nilai. Dalam hal ini, array bilangan bulat dari empat elemen dibuat dengan nilai-nilai elemen 3, 8, 1 dan 7. Hasil yang sama dapat dicapai dengan menggunakan, misalnya, perintah berikut:


 int[] data; data=new int[]{3,8,1,7}; 

Perintah data int [] pertama mendeklarasikan variabel array. Instruksi baru int [] {3,8,1,7} menciptakan array empat bilangan bulat, dan referensi ke array ini ditugaskan ke data variabel (artinya data perintah = int baru [] {3,8,1,7}) .
Contoh mendeklarasikan, menginisialisasi, dan menggunakan array ditunjukkan pada Listing 3.1.


Daftar 3.1. Memperkenalkan Array Satu Dimensi


 class Demo{ public static void main(String[] args){ //  : int i,n; //   : int[] data; //  : data=new int[]{3,8,1,7}; //  : n=data.length; //  : int[] nums=new int[n]; //   : for(i=0;i<nums.length;i++){ nums[i]=2*data[i]-3; System.out.println("nums["+i+"]="+nums[i]); } } } 

Program mendeklarasikan dan menginisialisasi array data dari empat elemen. Panjang array dihitung oleh pernyataan data.length. Nilai ini ditulis ke variabel integer n (perintah n = data.length). Berikutnya, perintah int [] nums = new int [n] mendeklarasikan array num integer lainnya. Jumlah elemen dalam array ini ditentukan oleh nilai variabel n, oleh karena itu, bertepatan dengan ukuran array data. Mengisi array nums dilakukan menggunakan pernyataan loop. Nilai elemen array nums dihitung berdasarkan nilai elemen array data (num perintah [i] = 2 * data [i] -3). Untuk menampilkan nilai elemen array nums, perintah System.out.println digunakan ("nums [" + i + "] =" + nums [i]).


Berikut ini menunjukkan seperti apa hasil eksekusi program:
Hasil program (dari Listing 3.1)


 nums[0]=3 nums[1]=13 nums[2]=-1 nums[3]=11 

Sekali lagi, kami mencatat bahwa pengindeksan elemen array dimulai dari nol. Oleh karena itu, dalam operator loop, variabel indeks i diinisialisasi dengan nilai nol awal, dan operator ketimpangan yang ketat digunakan dalam kondisi pengujian i <nums.length.
Penting juga bahwa ketika membuat array nums, ukurannya ditentukan dengan menggunakan variabel n, nilai yang dihitung selama eksekusi program.


Array dua dimensi dan multidimensi


Dimensi array mungkin lebih besar dari satu. Namun dalam praktiknya, array dimensi yang lebih tinggi dari yang kedua jarang digunakan. Selanjutnya, kita akan melihat cara untuk mendeklarasikan, menginisialisasi, dan menggunakan array dua dimensi di mana akses ke elemen array dilakukan menggunakan dua indeks. Jika Anda mewakili array dua dimensi sebagai tabel, maka indeks elemen pertama menentukan baris di mana elemen berada, dan indeks kedua menentukan kolom di mana elemen berada.


RINCIAN Meskipun array dua dimensi dengan mudah direpresentasikan sebagai tabel, itu diimplementasikan dalam cara yang sama sekali berbeda. Sebenarnya, array dua dimensi di Jawa adalah array satu dimensi yang elemennya adalah variabel array. Setiap variabel tersebut mengacu pada array satu dimensi. Saat menggunakan konstruksi ini, ilusi muncul bahwa kita berhadapan dengan sebuah tabel.

Membuat array dua dimensi semudah membuat array satu dimensi. Tetapi ketika mendeklarasikan variabel untuk array dua dimensi, dua pasang tanda kurung kotak kosong ditunjukkan setelah pengenal tipe, dan instruksi untuk membuat array dua dimensi - dalam tanda kurung kotak terpisah - menunjukkan ukuran untuk masing-masing indeks (jumlah baris dan kolom dalam array). Sintaks untuk mendeklarasikan array dua dimensi adalah sebagai berikut:


 [][] =new [][]; 

Seperti dalam kasus array satu dimensi, perintah ini dapat dibagi menjadi dua:


 [][] ; =new [][]; 

Perintah pertama mendeklarasikan variabel untuk array dua dimensi. Perintah kedua menciptakan array dua dimensi yang sebenarnya dengan ukuran yang ditentukan, dan referensi ke array ini ditetapkan sebagai nilai variabel array. Sebagai contoh, data double [] [] = new double [3] [4] perintah membuat array dua dimensi dengan elemen tipe double. Array memiliki 3 baris dan 4 kolom, dan tautan ke array ditulis ke variabel data. Perintah yang sama akan menghasilkan hasil yang sama:


 double[][] data; data=new double[3][4]; 

Akses ke elemen array dua dimensi dilakukan dalam format berikut: nama array ditunjukkan, dalam tanda kurung siku adalah indeks pertama elemen, dalam tanda kurung siku lainnya adalah indeks kedua elemen array. Pengindeksan di semua dimensi dimulai dari awal. Misalnya, tautan data [0] [3] adalah panggilan ke elemen array data dengan indeks 0 dan 3, dan ini merupakan elemen di baris pertama dan kolom keempat.


Untuk menginisialisasi array dua dimensi, operator loop bersarang atau daftar yang terdiri dari daftar nilai digunakan. Setiap daftar internal tersebut mendefinisikan nilai elemen array dalam sebuah string. Berikut ini adalah contoh inisialisasi array dua dimensi menggunakan daftar:


 double[][] data={{0.1,0.2,0.3},{0.4,0.5,0.6}}; int nums[][]={{1,2,3},{4,5}}; 

Perintah pertama membuat dan menginisialisasi array data dua dimensi sebanyak dua kali tiga (dua baris dan tiga kolom). Jumlah baris ditentukan oleh jumlah elemen dalam daftar eksternal. Ada dua elemen seperti itu - ini adalah daftar {0.1.0.2.0.3} dan {0.4.0.5.0.6}. Setiap daftar ini memiliki tiga elemen. Dari sini kita mendapatkan array ukuran 2 oleh 3. Daftar {0.1.0.2.0.3} mendefinisikan nilai elemen di baris pertama, daftar {0.4.0.5.0.6} mendefinisikan nilai elemen di baris kedua. Misalnya, elemen data [0] [0] mendapatkan nilai 0,1, elemen data [0] [2] mendapatkan nilai 0,3, elemen data [1] [0] mendapatkan nilai 0,4, dan elemen data [1] [2] mendapatkan nilai 0,6 .


Perintah kedua membuat bilangan bulat num array, yang terdiri dari dua baris (karena ada dua elemen di dalam daftar yang ditugaskan - daftar {1,2,3} dan {4,5}). Namun, baris pertama dari array yang dibuat berisi tiga elemen (karena daftar berisi {1,2,3} tiga nilai), dan baris kedua dari array berisi dua elemen (karena daftar {4,5} memiliki dua nilai). Dalam array yang dibuat, elemen num [0] [0] memiliki nilai 1, elemen num [0] [1] memiliki nilai 2, elemen num [0] [2] memiliki nilai 3, elemen num [1] [0] memiliki nilai 4 dan elemen nums [1] [1] adalah nilai 5.


RINCIAN Masalahnya adalah bahwa array nums di baris yang berbeda berisi jumlah elemen yang berbeda, tidak. Secara teknis, semuanya diimplementasikan lebih dari sekadar. Variabel dari array dua dimensi sebenarnya mengacu pada array satu dimensi dari dua elemen (jumlah baris dalam array dua dimensi). Tetapi elemen-elemen dari array ini bukan bilangan bulat, tetapi variabel yang dapat merujuk ke array bilangan satu dimensi (secara relatif, elemen-elemen tersebut bertipe int []). Variabel pertama mengacu pada array satu dimensi dari tiga elemen (1, 2 dan 3), dan variabel kedua mengacu pada array satu dimensi dari tiga elemen (4 dan 5). Ketika kita mengindeks (dengan satu indeks!) Variabel nums, kita mendapatkan akses ke elemen array satu dimensi yang dirujuk oleh variabel ini. Sebagai contoh, nums [0] adalah elemen pertama, dan nums [1] adalah elemen kedua dari array yang disebutkan dari variabel array. Dan elemen-elemen ini adalah referensi untuk array. Mereka dapat diindeks. Oleh karena itu, katakanlah nums [0] [1] adalah elemen kedua dalam array yang mengacu pada elemen num pertama [0] dalam array yang merujuk pada variabel nums. Jadi semuanya benar-benar terjadi. Dan kami menafsirkan instruksi nums [0] [1] sebagai daya tarik untuk elemen di baris pertama dan di kolom kedua dari array dua dimensi.

Listing 3.2 menunjukkan contoh program yang membuat array dua dimensi yang diisi menggunakan pernyataan loop bersarang.


Listing 3.2. Buat array dua dimensi


 class Demo{ public static void main(String[] args){ int i,j,n=3,val=1; //   : int[][] nums=new int[n-1][n]; //   : for(i=0;i<n-1;i++){ //    for(j=0;j<n;j++){ //    //   : nums[i][j]=val++; //   : System.out.print(nums[i][j]+" "); } //    : System.out.println(); } } } 

Perintah int [] [] nums = new int [n-1] [n] membuat array bilangan bulat integer dengan n-1 baris dan kolom n. Variabel n adalah nilai yang ditetapkan sebelumnya 3. Array diisi menggunakan operator loop bersarang. Nilai untuk elemen array (untuk indeks yang diberikan i dan j) ditetapkan oleh perintah nums [i] [j] = val ++. Di sini, elemen num [i] [j] diberikan nilai saat ini dari variabel val, dan segera setelah itu nilai dari variabel val dinaikkan satu.


PEMBERITAHUAN Sebagai hasil dari mengeksekusi instruksi val ++, nilai dari variable val dinaikkan satu. Tetapi karena bentuk postfix dari operator increment digunakan, nilai dari ekspresi val ++ adalah yang lama (sebelum bertambah satu) nilai dari variabel val.

Setelah menghitung nilai elemen, itu ditampilkan di area output. Sebagai hasil dari program ini, kami mendapatkan:
Hasil program (dari daftar 3.2)


 1 2 3 4 5 6 

Listing 3.3 memperlihatkan kode untuk program yang membuat array dua dimensi dengan string dengan panjang berbeda.


Daftar 3.3. Array dengan string dengan panjang berbeda


 class Demo{ public static void main(String[] args){ int i,j,val=1; //   (   ): int[][] nums=new int[4][]; //     : for(i=0;i<nums.length;i++){ //    : nums[i]=new int[i+1]; } //  : for(i=0;i<nums.length;i++){ for(j=0;j<nums[i].length;j++){ //   : nums[i][j]=val++; //   : System.out.print(nums[i][j]+" "); } //    : System.out.println(); } } } 

Perintah int [] [] nums = new int [4] [] membuat array bilangan bulat integer dua dimensi. Array ini terdiri dari empat baris. Namun, ukuran garis tidak ditentukan - pasangan kedua tanda kurung di akhir perintah kosong. Lebih tepatnya, belum ada garis. Mereka perlu diciptakan. Garis dibuat dalam pernyataan loop. Dalam pernyataan loop ini, variabel indeks saya menjalankan nilai dari 0 hingga nums.length-1, inklusif. Perintah nums [i] = new int [i + 1] membuat deretan array dua dimensi dengan indeks i. String semacam itu mengandung elemen i +1.


RINCIAN Secara teknis, semuanya terjadi seperti ini: instruksi int [i + 1] baru menciptakan array satu dimensi (string untuk array dua dimensi) dan referensi ke array ini ditulis ke variabel nums [i]. Dalam hal ini, nums [i] dapat diartikan sebagai tautan ke sebuah baris dengan indeks i. Arti dari instruksi nums.length akan menjadi jelas jika Anda ingat bahwa sebenarnya array dua dimensi adalah array satu dimensi, yang unsur-unsurnya merujuk pada array satu dimensi. Dalam kasus ini, nums.length memberikan nilai untuk jumlah elemen dalam array yang dirujuk oleh variabel nums - yaitu, ini adalah jumlah baris dalam array dua dimensi.

Akibatnya, kita mendapatkan array dua dimensi dari tipe segitiga: di baris pertama array ada satu elemen, di kedua - dua elemen, dan seterusnya, hingga baris keempat array.
Array yang dibuat diisi menggunakan operator loop bersarang. Variabel indeks i dalam operator loop eksternal mengambil nilai dari 0 hingga nums.length-1 dan menentukan baris dalam array num dua dimensi. Untuk variabel indeks j, batas atas rentang variasi ditentukan oleh num [i]. Instruksi panjang, yang mengembalikan jumlah elemen dalam baris dengan indeks i (variabel j berubah dari 0 ke num [i]. Panjang-1 inklusif).


RINCIAN Perlu dicatat bahwa num [i], pada kenyataannya, adalah variabel yang mengacu pada array satu dimensi yang membentuk string dengan indeks i. Jumlah elemen dalam array (string) ini ditentukan oleh ekspresi nums [i] .length.

Nilai elemen array ditetapkan oleh perintah nums [i] [j] = val ++. Berikut ini menunjukkan seperti apa hasil eksekusi program:
Hasil program (dari daftar 3.3)


 1 2 3 4 5 6 7 8 9 10 

Seperti yang diharapkan, kami mendapat array yang memiliki jumlah elemen berbeda di baris yang berbeda.


PEMBERITAHUAN Array, dimensi yang lebih dari dua, dibuat dengan cara yang sama. Saat mendeklarasikan variabel untuk array multidimensi, pasangan tanda kurung kosong diindikasikan setelah pengenal tipe. Jumlah pasangan tersebut ditentukan oleh dimensi array. Dalam perintah pembuatan array, ukuran setiap indeks ditunjukkan dalam tanda kurung terpisah.

»Informasi lebih lanjut tentang buku ini dapat ditemukan di situs web penerbit
» Isi
» Kutipan


Kupon diskon 25% untuk penjaja - Jawa


Setelah pembayaran versi kertas buku, sebuah buku elektronik dikirim melalui email.

Source: https://habr.com/ru/post/id472076/


All Articles