1. อาร์เรย์ในหน่วยความจำ
ในตัวอย่างก่อนหน้านี้ ภาพประกอบไม่ถูกต้องเล็กน้อย
เมื่อสร้างอาร์เรย์ (เช่น เมื่อสร้างสตริง) จะมีการจัดสรรหน่วยความจำสองบล็อกแยกกัน: บล็อกหนึ่งสำหรับจัดเก็บอาร์เรย์( คอนเทนเนอร์) และบล็อกที่ สองสำหรับตัวแปรที่เก็บที่อยู่ ของมัน รูปภาพด้านล่างแสดงถึงการชี้แจงนี้:
หน่วยความจำที่จัดสรรให้กับอาร์เรย์ของ10
int
องค์ประกอบและint[]
ตัวแปรที่เก็บแอดเดรสของint
อาร์เรย์ จะแสดงเป็นสีเขียว
สำหรับการเปรียบเทียบ ตัวแปรธรรมดาint
ที่เก็บค่า199
จะแสดงเป็นสีน้ำเงิน
นี่เป็นสิ่งที่ชวนให้นึกถึงการจัดเก็บสตริงในหน่วยความจำ คุณว่าไหม
ถูกต้องสตริง และเช่นเดียวกับเมื่อคุณทำงานกับสตริง คุณสามารถกำหนดตัวแปรอาร์เรย์ให้กันและกันได้:
รหัส | คำอธิบาย |
---|---|
|
สร้างอาร์เรย์ของ10 int องค์ประกอบ กำหนดค่า 4 ให้กับเซลล์ด้วย2 ดัชนี กำหนดค่า 9 ให้กับเซลล์ด้วย7 ดัชนี ใน b ตัวแปร ให้บันทึกที่อยู่ที่เก็บไว้ในa ตัวแปร ตอนนี้ a และb ชี้ไปที่วัตถุอาร์เรย์เดียวกันในหน่วยความจำ ในเซลล์ของวัตถุอาร์เรย์ที่มีดัชนี 9 ให้เขียนผลรวมของค่าที่เก็บไว้ในเซลล์2 (ซึ่งเก็บค่า4 ) และ7 (ซึ่งเก็บค่า9 ) |
วัตถุอาร์เรย์ยังคงอยู่ในตำแหน่งเดิม และa
ตัวแปร และb
เก็บที่อยู่เดียวกัน (อ้างอิง) ไปยังวัตถุเดียวกัน ดูที่รูปภาพ:

2. รายละเอียดเพิ่มเติมเกี่ยวกับการทำงานกับอาร์เรย์
คุณสามารถสร้างอาร์เรย์ขององค์ประกอบประเภทใดก็ได้ ในการทำเช่นนี้ เพียงเขียนวงเล็บเหลี่ยมหลังชื่อประเภท โดยทั่วไป การสร้างอาร์เรย์จะมีลักษณะดังนี้:
type[] name = new type[number];
โดยที่typeคือประเภทขององค์ประกอบที่เราจะเก็บไว้ในอาร์เรย์ Nameคือชื่อของตัวแปรที่เราจะใช้อ้างถึงอาร์เรย์ และnumberคือจำนวนเซลล์ในอาร์เรย์
ตัวอย่างด้านบนคือรูปแบบมาตรฐานสำหรับการสร้างตัวแปรอาร์เรย์และอ็อบเจกต์อาร์เรย์ ในความเป็นจริงแล้ว สิ่งเหล่านี้เป็นสองสิ่งที่แยกจากกัน
คุณสามารถสร้างตัวแปรอาร์เรย์แยกต่างหากจากวัตถุอาร์เรย์:
type[] name;
name = new type[number];
และอีกหนึ่งจุดที่ไม่สำคัญ:
ตัวอย่าง:
รหัส | คำอธิบาย |
---|---|
|
สร้างอาร์เรย์ของn องค์ประกอบ |
|
สร้างอาร์เรย์ที่มี203 องค์ประกอบ |
|
|
0..99
กับArrayIndexOfBoundException
หมายความว่าดัชนีอยู่นอกขอบเขตของอาร์เรย์
3. ความยาวของอาร์เรย์
ดังที่คุณเห็นในตัวอย่างก่อนหน้านี้ คุณสามารถสร้างตัวแปรอาร์เรย์ด้วยตัวมันเอง จากนั้นจึงกำหนดค่า (การอ้างอิงไปยังออบเจกต์อาร์เรย์) ให้กับตัวแปรนั้นในโค้ด คุณสามารถทำได้:
รหัส | คำอธิบาย |
---|---|
|
สร้างตัวแปรอาร์เรย์ที่มีประเภทเป็นint[] ถ้า a ตัวแปรน้อยกว่า10 ให้สร้างอาร์เรย์ของ 10 องค์ประกอบ มิฉะนั้น ให้สร้างอาร์เรย์ของ 20 องค์ประกอบ |
และตอนนี้คุณสามารถทำอะไรกับอาร์เรย์ดังกล่าวได้อีก คุณรู้ได้อย่างไรว่ามีกี่องค์ประกอบในนั้น?
เพื่อช่วยในเรื่องนี้ อาร์เรย์มีคุณสมบัติพิเศษ (ตัวแปร) length
ชื่อ คุณสามารถค้นหาความยาวของอาร์เรย์โดยใช้นิพจน์นี้:
array.length;
นี่array
คือชื่อของตัวแปรอาร์เรย์และlength
เป็นชื่อของคุณสมบัติของอาร์เรย์ ค่าของlength
คุณสมบัติไม่สามารถเปลี่ยนแปลงได้: length
คุณสมบัตินั้นสามารถกำหนดให้กับตัวแปรอื่น ๆ ได้ แต่ไม่สามารถกำหนดอะไรให้กับมันได้ (หากคุณพยายามทำเช่นนี้ โปรแกรมจะไม่ทำการคอมไพล์)
เราสามารถดำเนินการต่อจากตัวอย่างก่อนหน้านี้ได้ดังนี้:
รหัส | คำอธิบาย |
---|---|
|
สร้างตัวแปรอาร์เรย์ที่มีประเภทเป็นint[] ถ้า a ตัวแปรน้อยกว่า10 ให้สร้างอาร์เรย์ของ 10 องค์ประกอบ มิฉะนั้น ให้สร้างอาร์เรย์ของ 20 องค์ประกอบวนซ้ำองค์ประกอบทั้งหมดของอาร์เรย์: จาก 0 ถึงความยาวarray.length - 1 |
4. สรุปข้อเท็จจริงเกี่ยวกับอาร์เรย์ในภาษาจาวา
สรุปสิ่งที่เรารู้เกี่ยวกับอาร์เรย์:
ข้อเท็จจริง 1.อาร์เรย์ประกอบด้วยเซลล์จำนวนมาก
ข้อเท็จจริงที่ 2คุณเข้าถึงเซลล์ที่ต้องการโดยใช้หมายเลข (ดัชนี)
ข้อเท็จจริงที่ 3เซลล์ทั้งหมดเป็นประเภทเดียวกัน
ข้อเท็จจริงที่ 4ค่าเริ่มต้นของเซลล์ทั้งหมดคือ 0 (ถ้าเซลล์เก็บตัวเลข) null
(ถ้าเซลล์เก็บการอ้างอิงวัตถุ) หรือfalse
(ถ้าเซลล์เก็บboolean
ค่า) คุณจะได้เรียนรู้เพิ่มเติมเกี่ยวกับค่าเริ่มต้นในบทนี้
ข้อเท็จจริง 5. String[] list
เป็นเพียงการประกาศตัวแปร สิ่งนี้ไม่ได้สร้างคอนเทนเนอร์ (วัตถุอาร์เรย์) เอง ในการใช้ตัวแปร ก่อนอื่นคุณต้องสร้างอาร์เรย์ (คอนเทนเนอร์) และกำหนดให้กับตัวแปร ดูตัวอย่างด้านล่าง
ข้อเท็จจริง 6.เมื่อเราสร้างอ็อบเจกต์อาร์เรย์ (คอนเทนเนอร์) เราต้องระบุขนาดของออบเจกต์ เช่น จำนวนเซลล์ที่มี สิ่งนี้ทำได้ด้วยคำสั่งเช่น: new TypeName[n]
;
ข้อเท็จจริงที่ 7ความยาวของอาร์เรย์สามารถพบได้โดยใช้.length
คุณสมบัติ
ข้อเท็จจริงที่ 8หลังจากสร้างอาร์เรย์แล้ว คุณไม่สามารถเปลี่ยนประเภทขององค์ประกอบหรือจำนวนองค์ประกอบที่เก็บได้
รหัส | คำอธิบาย |
---|---|
|
s คือnull list _null |
|
ตัวแปรlist เก็บการอ้างอิงถึงวัตถุ: อาร์เรย์สตริงที่ประกอบด้วย10 องค์ประกอบ n เป็น10 |
|
ตอนนี้ |
|
จะเกิดข้อยกเว้น (ข้อผิดพลาดของโปรแกรม) นั่นคือโปรแกรมจะหยุดทำงาน list เก็บการอ้างอิงถึงnull |
|
ข้อยกเว้นอาร์เรย์ที่อยู่นอกขอบเขต (ข้อผิดพลาดของโปรแกรม) จะถูกสร้างขึ้น หาก list เก็บ10 องค์ประกอบ/เซลล์ ดัชนีที่ถูกต้องคือ: 0 1 2 3 4 5 6 7 8 9 — 10 องค์ประกอบ |
GO TO FULL VERSION