1. Stringhanay

Gusto kong bigyan ka ng maikling pangkalahatang-ideya tungkol sa Stringmga array.

Tulad ng sinabi namin dati, ang isang array ay maaaring maging anumang uri. Nangangahulugan ito na maaari kang lumikha ng isang hanay ng Stringmga s. Kung gusto naming magsulat ng program na "nagbabasa ng 10 linya mula sa keyboard at ipinapakita ang mga ito sa reverse order," narito ang magiging hitsura ng code:

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]);
}
Lumikha ng Scannerobject
Gumawa ng 10-element array object
Loop mula 0 hanggang 9

Magbasa ng string mula sa keyboard at i-save ito sa susunod na cell ng array
Loop mula 9 hanggang 0

Ipakita ang susunod na cell sa array

Halos hindi nagbago ang code! Kailangan lang naming palitan intng Stringkapag gumagawa ng array. Well, at kapag binabasa ang string mula sa keyboard, pinalitan din namin ang nextInt()paraan ng nextLine().


2. Stringarray sa memorya

At isa pang kapaki-pakinabang na katotohanan. Isaalang-alang natin ang 3 larawan:

Larawan 1. Paano Stringnakaayos ang isang bagay sa memorya:

String array sa memorya

Ang larawang ito ay kinuha mula sa mga nakaraang aralin.

Pakitandaan na ang teksto ng string ay hindi direktang nakaimbak sa variable: isang hiwalay na bloke ng memorya ang inilalaan para dito. Ang isang Stringvariable ay nag-iimbak ng address (reference) sa isang bagay na nag-iimbak ng teksto.

Larawan 2. Paano nakaayos ang isang integer array sa memorya:

String array sa memorya 2

Pamilyar din ang larawang ito.

Larawan 3. Paano nakaayos ang isang string array sa memorya:

Paano nakaayos ang isang String array sa memorya

Sa kaliwa nakikita namin ang isang array variable na ang uri ay String[](ito ay nag-iimbak ng address ng isang array object).

Sa gitna, mayroon kaming Stringarray object mismo.

At sa kanan ay mga string na bagay na nag-iimbak ng ilang teksto.

Ang mga cell ng Stringarray ay hindi nag-iimbak ng mga string mismo (ang teksto ng mga String object). Sa halip, iniimbak nila ang kanilang mga address (mga sanggunian sa kanila). Sa parehong paraan na Stringiniimbak ng mga variable ang mga address ng mga string object (kung saan naka-imbak ang teksto).

Isaalang-alang ito kapag inihambing mo ang mga array cell:

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]);
Gumawa ng array ng 10 string

Maglagay ng mga value sa array



true (ang mga reference ay pantay)
false (ang mga reference ay hindi pantay)
true (ang mga string ay pantay)
true(ang mga string ay pantay pa rin)


3. Mabilis na pagsisimula ng array sa Java

Ang mga array ay sobrang kapaki-pakinabang, kaya sinubukan ng mga tagalikha ng Java na gawing maginhawa ang pakikipagtulungan sa kanila hangga't maaari.

Ang unang bagay na ginawa nila ay ang pasimplehin ang array initialization, ang proseso kung saan mo ibibigay ang mga paunang halaga ng isang array.

Pagkatapos ng lahat, bilang karagdagan sa data na nabasa mula sa isang lugar, ang isang programa ay madalas ding nangangailangan ng sarili nitong panloob na data upang gumana. Halimbawa, ipagpalagay na kailangan nating iimbak ang mga haba ng bawat buwan sa isang array. Ito ang maaaring hitsura ng code:

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

Ngunit salamat sa mga tagalikha ng Java, mayroong isang paraan upang maisulat ito nang mas maigsi:

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

Maaari mo lamang ilista ang lahat ng mga halaga ng array, na pinaghihiwalay ng mga kuwit!

Maginhawa, tama? Ngunit hindi lang iyon.

Habang nangyayari ito, matutukoy ng compiler ang uri ng lalagyan (array object) batay sa uri ng mga halaga ng array. At para matukoy ang haba ng array, walang kuwenta na bilangin ang bilang ng mga elementong nakasulat sa curly braces.

Nangangahulugan ito na ang code na ito ay maaaring maisulat nang mas maikli:

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

Isang bagay ng kagandahan, hindi ba? 🙂

Ito ay tinatawag na "fast array initialization". Sa pamamagitan ng paraan, ito ay gumagana para sa mga uri maliban sa int...

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