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: Uploaded 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:
- 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. - 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. - Ukuran array kudu ditemtokake nalika nggawe. Sampeyan ora bakal bisa nemtokake mengko utawa ngowahi ukuran sawise digawe.
[]
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 :) Yaiku, 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 String
lan ngandhani kompiler: "Temokake sel kanthi indeks 7 ing array birthdays
lan 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 length
nyimpen 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 i
sing 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 int
bisa 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 length
bakal 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 obyekCat
:
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:
- Ing kasus primitif, array Jawa nyimpen akeh nilai tartamtu (kayata angka
int
). Ing kasus obyek, array nyimpen akeh referensi. Array kasebutcats
kasusun saka telung sel, sing saben-saben ngemot referensi kanggo obyekCat
. Saben pranala nuduhake alamat ing memori ing ngendi obyek kasebut disimpen. - Unsur Array disimpen ing memori ing blok siji. Iki ditindakake kanggo akses sing luwih efisien lan cepet. Mangkono, pranala kasebut
cats
nuduhake blok ing memori ing ngendi kabeh obyek - unsur array - disimpen. Acats[0]
- menyang alamat tartamtu ing blok iki.
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 nomerint
kanthi 10 sel saben. Iku bakal katon kaya iki: Saben 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 numbers
minangka 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": Struktur 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.- Array ing Jawa - artikel rinci babagan array, nggawe, initialization lan nggunakake. Kanthi conto.
- Kelas Arrays lan panggunaane - artikel kasebut nggambarake sawetara metode kelas kasebut
Array
- Arrays minangka kuliah JavaRush pisanan sing dikhususake kanggo array.
- Array multidimensional - artikel rinci babagan array multidimensi kanthi conto.
- Mbalikake array nul-dawa, ora null - Pengarang Pemrograman Efektif Joshua Bloch ngomong babagan carane luwih apik ngasilake array kosong.
GO TO FULL VERSION