JavaRush /Blog Jawa /Random-JV /Soko babagan array ing Jawa

Soko babagan array ing Jawa

Diterbitake ing grup
Hello! Sadurunge, sajrone latihan, kita nggarap obyek tunggal (utawa jinis primitif). Nanging kepiye yen kita ora kudu nggarap siji obyek, nanging kanthi klompok kabeh? Contone, kita pengin nggawe dhaptar ulang tahun kabeh karyawan ing perusahaan kita. Sampeyan kudu ngemot, sebutno, 30 baris ing format: "Andrey Petrov, 25 Januari." Struktur data khusus, array, bakal mbantu kita ing kene. Yen mbandhingaké Uploaded karo obyek saka urip nyata, struktur banget padha karo bank vault karo sel: Soko babagan array ing Jawa - 1Uploaded uga kasusun saka sel. Sampeyan bisa nyelehake soko ing saben sel. Ing kasus iki, kanggo ngakses isi sampeyan kudu ngerti nomer sel. Array digawe kaya iki:
public class Main {

   public static void main(String[] args) {

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

   }
}
Ing kene kita wis nggawe array 10 sel. Sampeyan bisa langsung menehi perhatian marang sawetara fitur array:
  1. Iku nyimpen data saka jinis strictly ditetepake. Yen wiwitane nggawe array string String, kita ora bakal bisa nyimpen apa-apa liyane. Jinis data ditemtokake nalika nggawe array. Iki sing mbedakake saka safe deposit box, ing ngendi klien bisa nyimpen apa wae sing dikarepake.
  2. Larik bisa nyimpen data saka jinis primitif (contone, int), strings ( String), utawa obyek saka kelas padha. Luwih tepate, dudu obyek kasebut dhewe, nanging ana hubungane karo obyek kasebut.
  3. Ukuran array kudu ditemtokake nalika nggawe. Sampeyan ora bakal bisa nemtokake mengko utawa ngowahi ukuran sawise digawe.
Jawa nuduhake yen array digawe kanthi nggunakake tanda kurung []ing loro-lorone ekspresi kasebut. Bisa ditemtokake sadurunge jeneng variabel referensi utawa sawise - bakal bisa digunakake kanthi cara:
//Java arrays of strings, two syntaxes
String [] birthdays = new String[10];
String birthdays [] = new String[10];
Yen sampeyan pengin nulis soko menyang larik, sampeyan kudu nemtokake nomer sel ing ngendi nilai kasebut bakal ditulis. Nomer sel Array diwiwiti ing 0. Miwiti saka nol minangka praktik umum ing program. Sing luwih cepet sampeyan wis biasa, luwih apik :) Soko babagan array ing Jawa - 2Yaiku, yen sampeyan pengin nglebokake sawetara nilai ing sel pisanan array , wis rampung kaya iki:
public class Main {

   public static void main(String[] args) {

       String birthdays [] = new String[10];
       birthdays[0] = "Lena Eliseeva, March 12";
   }
}
Saiki sel pisanan saka array kita, sing ngemot ulang taun kolega, ngemot senar karo ulang tahun Lena. Kanthi analogi, sampeyan bisa nambah nilai liyane:
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";
   }
}
Wigati dicathet: kita nambahake ulang tahun Olesya menyang sel kaping wolu (apa sampeyan wis lali kenapa sel No. 7 minangka nomer wolu?). Senajan kabeh sel liyane ora diisi. Ora perlu nulis nilai ing array kanthi urutan - ora ana watesan kasebut. Ing tangan liyane, yen sampeyan nulis ing urutan, iku bakal luwih gampang kanggo nglacak nomer sel free lan dikuwasani, lan ora bakal ana "bolongan" kiwa ing Uploaded. Yen sampeyan pengin entuk isi sel array, kaya ing kasus sel bank, sampeyan kudu ngerti nomer kasebut. Iki ditindakake kaya mangkene:
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);
   }
}
Output konsol:

Олеся Остапенко, 3 января
Kita nggawe variabel Stringlan ngandhani kompiler: "Temokake sel kanthi indeks 7 ing array birthdayslan nemtokake nilai sing disimpen ing variabel kasebut String olesyaBirthday." Semono uga sing ditindakake.

dawa array Jawa

Nalika nggarap array, sampeyan bisa kanthi gampang ngerteni dawa nggunakake 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);
   }
}
Output konsol:

10
Cathetan:Properti kasebut lengthnyimpen ukuran array, dudu jumlah sel sing diisi. Array kita mung nyimpen 3 nilai, nanging nalika digawe, kita nemtokake ukuran = 10. Iki minangka nilai sing bali lapangan length. Yagene iki bisa migunani? Contone, yen sampeyan pengin nyithak dhaptar kabeh ulang tahun menyang konsol (kanggo mriksa manawa ora ana sing lali), sampeyan bisa nindakake iki ing siji daur ulang:
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]);
       }
   }
}
Ing daur ulang kita nggawe variabel ising wiwitane padha karo nol. Ing saben pass, kita njupuk sel karo indeks i saka Uploaded lan print Nilai kanggo console. Daur ulang bakal nggawe 10 iterasi, lan nilai i bakal tambah saka 0 dadi 9 - mung miturut indeks sel array kita! Kanthi cara iki, kita bakal nyetak kabeh nilai saka birthdays[0]menyang konsol birthdays[9] . Nyatane, ana cara kanggo nggawe larik kanthi cara sing beda. Contone, array nomer intbisa digawe kaya iki:
public class Main {

   public static void main(String[] args) {
       int numbers [] = {7, 12, 8, 4, 33, 79, 1, 16, 2};
   }
}
Cara iki diarani "inisialisasi cepet". Cukup trep yen kita langsung nggawe array lan isi karo nilai. Ora perlu kanthi jelas nemtokake ukuran array - lapangan lengthbakal diisi kanthi otomatis sajrone wiwitan cepet.
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);
   }
}
Output konsol:

9

Array Objek Jawa

Sampeyan wis krungu manawa susunan obyek lan susunan primitif disimpen ing memori kanthi cara sing beda. Ayo njupuk, contone, array saka telung obyek 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");
   }
}
Ana sawetara perkara sing kudu dingerteni ing kene:
  1. Ing kasus primitif, array Jawa nyimpen akeh nilai tartamtu (kayata angka int). Ing kasus obyek, array nyimpen akeh referensi. Array kasebut catskasusun saka telung sel, sing saben-saben ngemot referensi kanggo obyek Cat. Saben pranala nuduhake alamat ing memori ing ngendi obyek kasebut disimpen.
  2. Unsur Array disimpen ing memori ing blok siji. Iki ditindakake kanggo akses sing luwih efisien lan cepet. Mangkono, pranala kasebut catsnuduhake blok ing memori ing ngendi kabeh obyek - unsur array - disimpen. A cats[0]- menyang alamat tartamtu ing blok iki.
Soko babagan array ing Jawa - 3Iku penting kanggo ngerti sing Uploaded ora mung bisa nyimpen obyek, iku dhewe obyek.

Array array utawa array rong dimensi

Adhedhasar iki, kita ngadhepi pitakonan - bisa nggawe, contone, ora Uploaded saka strings utawa nomer, nanging Uploaded saka array? Lan jawaban bakal - ya, kita bisa! Array bisa nyimpen sembarang obyek ing jerone, kalebu array liyane. Array kasebut bakal diarani rong dimensi. Yen sampeyan nggambarake ing gambar, bakal katon meh padha karo meja biasa. Contone, kita pengin nggawe larik sing bakal nyimpen 3 larik nomer intkanthi 10 sel saben. Iku bakal katon kaya iki: Soko babagan array ing Jawa - 4Saben baris nggantosi larik saka nomer int. Array pisanan ngandhut nomer saka 1 kanggo 10, kaloro - saka -1 kanggo -10, katelu - pesawat saka nomer acak. Saben array iki disimpen ing sel array rong dimensi kita. Inisialisasi array rong dimensi ing kode katon kaya iki:
public static void main(String[] args) {
   Cat[][] cats = new Cat[3][5];
}
Array kucing rong dimensi kita nyimpen 3 susunan 5 sel saben. Yen kita pengin nyelehake obyek ing sel katelu saka array kapindho, kita nindakake kaya iki:
public static void main(String[] args) {
   Cat[][] cats = new Cat[3][5];
   cats[1][2] = new Cat("Fluff");
}
[1]nuding menyang array kapindho, lan [2]nuding menyang sel katelu saka array iki. Wiwit array rong dimensi kasusun saka sawetara array, supaya bisa ngliwati lan nyithak kabeh nilai menyang konsol (utawa ngisi kabeh sel), kita butuh daur ulang ganda, nested:
for (int i = 0; i < cats.length; i++) {
   for (int j = 0; j < cats[i].length; j++) {
       System.out.println(cats[i][j]);
   }
}
Ing daur ulang njaba (variabel i), kita gantian ngliwati kabeh array sing nggawe array rong dimensi. Ing daur ulang batin (variabel j) kita ngulang kabeh sel saben array. Akibaté, obyek cats[0][0](larik pisanan, sel pisanan) bakal ditampilake pisanan ing console, lan obyek kapindho bakal cats[0][1](larik pisanan, sel kapindho). Nalika array pisanan kesel, , cats[1][0], cats[1][1]lan cats[1][2]sateruse bakal dadi output. Miturut cara, initialization cepet uga kasedhiya kanggo array rong dimensi:
int[][] numbers = {{1,2,3}, {4,5,6}, {7,8,9}};
Biasane, kita bakal nulis array rong dimensi numbersminangka int[3][3], nanging cara iki ngidini kita langsung nemtokake nilai kasebut. Napa array rong dimensi dibutuhake? Contone, kanthi bantuan, sampeyan bisa nggawe ulang game sing misuwur "Battleship": Soko babagan array ing Jawa - 5Struktur lapangan ing "Battleship" kaya sing bisa diterangake kanthi gampang: susunan rong dimensi saka 10 array, 10 sel saben. . Sampeyan nggawe loro array kasebut - kanggo sampeyan dhewe lan mungsuh:
int [][] seaBattle = new int[10][10];
int [][] seaBattle2 = new int[10][10];
Sampeyan ngisi sawetara nilai (umpamane, nomer utawa pratandha *) ing sel sing ana kapal sampeyan, banjur sampeyan lan mungsuh sampeyan gantian nelpon nomer sel:
  • SeaBattle[6][5]!
  • Biyen! seaBattle2[6][6]!
  • tatu!
  • seaBattle2[6][7]!
  • tatu!
  • seaBattle2[6][8]!,
  • dipateni!

Sumber daya tambahan babagan susunan

Pengin ngerti luwih akeh babagan array? Mangga deleng artikel ing ngisor iki. Ana akeh informasi sing menarik lan migunani babagan topik iki.
  1. Array ing Jawa - artikel rinci babagan array, nggawe, initialization lan nggunakake. Kanthi conto.
  2. Kelas Arrays lan panggunaane - artikel kasebut nggambarake sawetara metode kelas kasebutArray
  3. Arrays minangka kuliah JavaRush pisanan sing dikhususake kanggo array.
  4. Array multidimensional - artikel rinci babagan array multidimensi kanthi conto.
  5. Mbalikake array nul-dawa, ora null - Pengarang Pemrograman Efektif Joshua Bloch ngomong babagan carane luwih apik ngasilake array kosong.
Iki rampung kenalan pisanan kita karo array, nanging iki mung awal interaksi karo wong-wong mau. Ing kuliah ing ngisor iki kita bakal weruh cara sing menarik kanggo nggunakake, lan uga ngerteni apa fungsi sing dibangun ing Jawa supaya luwih trep nggarap struktur data iki :)
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION