1. Stringlarik

Saya ingin memberi Anda gambaran singkat tentang Stringarray.

Seperti yang kami katakan sebelumnya, sebuah array bisa bertipe apa saja. Ini berarti Anda dapat membuat array Strings. Jika kita ingin menulis sebuah program yang "membaca 10 baris dari keyboard dan menampilkannya dalam urutan terbalik", berikut tampilan kodenya:

Scanner console = new Scanner(System.in);
String[] array = new String[10];
for (int i = 0; i < 10; i++)
{
   array[i] = console.nextLine();
}
for (int i = 9; i >= 0; i--)
{
   System.out.println(array[i]);
}
Membuat Scannerobjek
Membuat objek array 10 elemen
Loop dari 0 hingga 9

Membaca string dari keyboard dan menyimpannya di sel berikutnya dari array
Loop dari 9 ke 0

Menampilkan sel berikutnya dalam array

Kode hampir tidak berubah! Kami hanya perlu mengganti intdengan Stringsaat membuat array. Nah, dan saat membaca string dari keyboard, kami juga mengganti metodenya nextInt()dengan nextLine().


2. Stringlarik dalam memori

Dan satu lagi fakta yang bermanfaat. Mari kita perhatikan 3 gambar:

Gambar 1. Bagaimana suatu Stringobjek disusun dalam memori:

Array string dalam memori

Gambar ini diambil dari pelajaran sebelumnya.

Harap perhatikan bahwa teks string tidak disimpan langsung dalam variabel: blok memori terpisah dialokasikan untuknya. Variabel Stringmenyimpan alamat (referensi) ke objek yang menyimpan teks.

Gambar 2. Bagaimana array integer disusun dalam memori:

Array string dalam memori 2

Gambar ini juga akrab.

Gambar 3. Bagaimana susunan string array di dalam memori:

Bagaimana array String diatur dalam memori

Di sebelah kiri kita melihat variabel array yang bertipe String[](menyimpan alamat objek array).

Di tengah, kita memiliki Stringobjek array itu sendiri.

Dan di sebelah kanan adalah objek string yang menyimpan beberapa teks.

Sel-sel array Stringtidak menyimpan string itu sendiri (teks dari objek String). Sebaliknya, mereka menyimpan alamat mereka (referensi ke mereka). Dengan cara yang sama Stringvariabel menyimpan alamat objek string (tempat teks disimpan).

Pertimbangkan ini saat Anda membandingkan sel array:

String[] array = new String[10];

array[1] = "Hello";
array[2] = array[1];
array[3] = new String("Hello");
// Compare
array[1] == array[2];
array[1] == array[3];
array[1].equals(array[3]);
array[1].equalsIgnoreCase(array[3]);
Buat array 10 string

Masukkan nilai ke dalam array



true (referensinya sama)
false (referensinya tidak sama)
true (stringnya sama)
true(stringnya masih sama)


3. Inisialisasi larik cepat di Jawa

Array sangat berguna, jadi pembuat Java mencoba membuatnya senyaman mungkin.

Hal pertama yang mereka lakukan adalah menyederhanakan inisialisasi larik, proses di mana Anda memberikan nilai awal larik.

Lagipula, selain data yang dibaca dari suatu tempat, sebuah program juga cukup sering membutuhkan data internalnya sendiri agar bisa bekerja. Misalnya, kita perlu menyimpan panjang setiap bulan dalam sebuah array. Seperti inilah tampilan kodenya:

int[] months = new int[12];
months[0] = 31; // January
months[1] = 28; // February
months[2] = 31; // March
months[3] = 30; // April
months[4] = 31; // May
months[5] = 30; // June
months[6] = 31; // July
months[7] = 31; // August
months[8] = 30; // September
months[9] = 31; // October
months[10] = 30; // November
months[11] = 31; // December

Namun terima kasih kepada pembuat Java, ada cara untuk menulis ini dengan lebih ringkas:

// Lengths of months of the year
int[] months = new int[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

Anda cukup mencantumkan semua nilai array, dipisahkan dengan koma!

Nyaman, bukan? Tapi itu belum semuanya.

Seperti yang terjadi, compiler dapat menentukan tipe container (objek array) berdasarkan tipe nilai array. Dan untuk menentukan panjang array, sangat mudah untuk menghitung jumlah elemen yang ditulis dalam kurung kurawal.

Itu berarti kode ini dapat ditulis lebih pendek:

// Lengths of months of the year
int[] months = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

Suatu hal yang indah, bukan? 🙂

Ini disebut "inisialisasi larik cepat". Omong-omong, ini berfungsi untuk jenis selain int...

// Names of months of the year
String[] months = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November ", "December"};