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คือnulllist_null |
|
ตัวแปรlistเก็บการอ้างอิงถึงวัตถุ: อาร์เรย์สตริงที่ประกอบด้วย10องค์ประกอบ nเป็น10 |
|
ตอนนี้ |
|
จะเกิดข้อยกเว้น (ข้อผิดพลาดของโปรแกรม) นั่นคือโปรแกรมจะหยุดทำงาน listเก็บการอ้างอิงถึงnull |
|
ข้อยกเว้นอาร์เรย์ที่อยู่นอกขอบเขต (ข้อผิดพลาดของโปรแกรม) จะถูกสร้างขึ้น หาก listเก็บ10องค์ประกอบ/เซลล์ ดัชนีที่ถูกต้องคือ: 0 1 2 3 4 5 6 7 8 9— 10องค์ประกอบ |
GO TO FULL VERSION