1. Mga array sa memorya
Sa mga nakaraang halimbawa, ang mga ilustrasyon ay medyo hindi tumpak.
Kapag lumilikha ng mga array (tulad ng kapag lumilikha ng mga string), dalawang magkahiwalay na bloke ng memorya ang inilalaan: isa para sa pag-iimbak ng array (lalagyan) mismo at isang pangalawang bloke para sa variable na nag-iimbak ng address nito . Ang larawan sa ibaba ay kumakatawan sa paglilinaw na ito:
Ang memorya na inilaan para sa hanay ng 10
int
mga elemento at ang int[]
variable na nag-iimbak ng address ng int
array, ay ipinapakita sa berde.
Para sa paghahambing, ang isang ordinaryong int
variable na nag-iimbak ng halaga 199
ay ipinapakita sa asul.
Ito ay isang maliit na nakapagpapaalaala sa pag-iimbak ng mga string sa memorya, hindi ba?
Tama yan, strings. At tulad ng kapag nagtatrabaho ka sa mga string, maaari kang magtalaga ng mga variable ng array sa isa't isa:
Code | Paliwanag |
---|---|
|
Lumikha ng isang hanay ng 10 int mga elemento. Italaga ang halaga 4 sa cell na may index 2 . Italaga ang halaga 9 sa cell na may index 7 . Sa b variable, i-save ang address na nakaimbak sa a variable. Ngayon a at b ituro ang parehong array object sa memorya. Sa cell ng array object na may index 9 , isulat ang kabuuan ng mga value na nakaimbak sa mga cell 2 (na nag-iimbak ng value 4 ) at 7 (na nag-iimbak ng value 9 ). |
Ang array object ay nananatili sa mismong lugar kung saan ito naroroon, at ang a
at b
mga variable ay nag-iimbak ng parehong address (reference) sa parehong bagay. Tingnan ang larawan:
2. Higit pang mga detalye tungkol sa pagtatrabaho sa mga array
Maaari kang lumikha ng isang hanay ng mga elemento ng ganap na anumang uri. Upang gawin ito, isulat lamang ang mga square bracket pagkatapos ng pangalan ng uri. Sa pangkalahatan, ang paglikha ng isang array ay ganito ang hitsura:
type[] name = new type[number];
Kung saan ang uri ay ang uri ng mga elemento na aming iimbak sa array. Ang pangalan ay ang pangalan ng variable na gagamitin namin upang sumangguni sa array, at ang numero ay ang bilang ng mga cell sa array.
Ang halimbawa sa itaas ay ang canonical form para sa paglikha ng array variable at array object. Sa katotohanan, ito ay dalawang magkahiwalay na entity.
Maaari kang lumikha ng isang array variable nang hiwalay mula sa isang array object:
type[] name;
name = new type[number];
At isa pang punto na hindi gaanong mahalaga:
Mga halimbawa:
Code | Paliwanag |
---|---|
|
Lumikha ng isang hanay ng n mga elemento |
|
Gumawa ng array na may 203 mga elemento |
|
|
0..99
isang ArrayIndexOfBoundException
, ibig sabihin na ang index ay nasa labas ng mga hangganan ng array.
3. Haba ng array
Tulad ng nakita mo sa nakaraang halimbawa, maaari kang lumikha ng isang array variable nang mag-isa at pagkatapos ay magtalaga ng isang halaga (isang reference sa isang array object) dito sa isang lugar sa code. Maaari mo ring gawin ito:
Code | Paliwanag |
---|---|
|
Gumawa ng array variable na ang uri ay int[] Kung ang a variable ay mas mababa sa 10 , pagkatapos ay gumawa ng array ng 10 mga elemento. Kung hindi, lumikha ng isang hanay ng 20 mga elemento |
At ngayon ano pa ang maaari mong gawin sa ganoong array? Paano mo malalaman kung ilang elemento ang nasa loob nito?
Upang makatulong dito, ang mga array ay may espesyal na property (variable) na pinangalanang length
. Maaari mong mahanap ang haba ng isang array gamit ang expression na ito:
array.length;
Narito array
ang pangalan ng array variable at length
ang pangalan ng property ng array. Ang halaga ng length
ari-arian ay hindi mababago: ang length
ari-arian mismo ay maaaring italaga sa iba pang mga variable, ngunit walang maaaring italaga dito (kung susubukan mong gawin ito, ang programa ay hindi mag-compile).
Maaari tayong magpatuloy sa nakaraang halimbawa tulad nito:
Code | Paliwanag |
---|---|
|
Gumawa ng array variable na ang uri ay int[] Kung ang a variable ay mas mababa sa 10 , pagkatapos ay gumawa ng array ng 10 mga elemento. Kung hindi, lumikha ng hanay ng 20 mga elemento I-loop ang lahat ng elemento ng array: mula 0 hanggang habaarray.length - 1 |
4. Buod ng mga katotohanan tungkol sa mga array sa Java
Recap natin ang alam natin tungkol sa mga array:
Katotohanan 1. Ang array ay binubuo ng maraming cell.
Katotohanan 2. Ina-access mo ang isang partikular na cell sa pamamagitan ng paggamit ng numero nito (index).
Katotohanan 3. Ang lahat ng mga cell ay may parehong uri.
Katotohanan 4. Ang paunang halaga ng lahat ng mga cell ay 0 (kung ang mga cell ay nag-iimbak ng mga numero), null
(kung ang mga cell ay nag-iimbak ng mga sanggunian ng bagay), o false
(kung ang mga cell ay nag-iimbak boolean
ng mga halaga). Matututo ka pa tungkol sa mga default na halaga sa kabanatang ito .
Ang katotohanan 5. String[] list
ay deklarasyon lamang ng isang variable. Hindi nito ginagawa ang container (array object) mismo. Para magamit ang variable, kailangan mo munang gumawa ng array (container) at italaga ito sa variable. Tingnan ang halimbawa sa ibaba.
Katotohanan 6. Kapag gumawa tayo ng array object (container), dapat nating ipahiwatig kung gaano ito kalaki, ibig sabihin, kung gaano karaming mga cell ang nilalaman nito. Ginagawa ito sa isang pahayag tulad ng: new TypeName[n]
;
Katotohanan 7. Ang haba ng isang array ay matatagpuan gamit ang .length
property.
Katotohanan 8. Pagkatapos gumawa ng array, hindi mo mababago ang uri ng mga elemento nito o ang bilang ng mga elemento na iniimbak nito.
Code | Paliwanag |
---|---|
|
s ay null list aynull |
|
Ang list variable ay nag-iimbak ng reference sa isang object: isang string array na binubuo ng 10 mga elemento. n ay10 |
|
Ngayon |
|
Ang isang exception (program error) ay itatapon, ibig sabihin, ang programa ay mag-crash. list nag-iimbak ng reference sanull |
|
Isang array-out-of-bounds exception (program error) ang bubuo. Kung ang isang list nag-iimbak 10 ng mga elemento/cell, ang wastong mga indeks ay: 0 1 2 3 4 5 6 7 8 9 — 10 mga elemento. |