อาร์เรย์
อาร์เรย์เป็นโครงสร้างข้อมูลที่เก็บค่าประเภทเดียวกัน เข้าถึงองค์ประกอบอาร์เรย์แต่ละรายการได้โดยใช้ดัชนีจำนวนเต็ม ตัวอย่างเช่น ถ้า a เป็นอาร์เรย์ของจำนวนเต็ม ค่าของนิพจน์ a[i] จะเท่ากับจำนวนเต็ม i-th ในอาร์เรย์
![อาร์เรย์ Java - 1]()
อาร์เรย์จะถูกประกาศดังนี้ ขั้นแรก ระบุประเภทของอาร์เรย์ นั่นคือ ประเภทขององค์ประกอบที่มีอยู่ในอาร์เรย์ ตามด้วยวงเล็บเหลี่ยมว่างคู่หนึ่ง แล้วตามด้วยชื่อของตัวแปร ตัวอย่างเช่น ต่อไปนี้เป็นวิธีประกาศอาร์เรย์ที่ประกอบด้วยจำนวนเต็ม:
int[] a;
อย่างไรก็ตาม คำสั่งนี้ประกาศเฉพาะตัวแปร
а
โดยไม่ต้องเตรียมใช้งานด้วยอาร์เรย์จริง หากต้องการสร้างอาร์เรย์ คุณต้องใช้โอเปอเร
new
เตอร์
int[] a = new int [100];
โอเปอเรเตอร์นี้สร้างอาร์เรย์จำนวนเต็ม 100 จำนวน องค์ประกอบของอาร์เรย์นี้มีหมายเลขตั้งแต่ 0 ถึง 99 (ไม่ใช่ 1 ถึง 100) เมื่อสร้างแล้ว คุณสามารถเติมอาร์เรย์ได้ เช่น การใช้ลูป
int[] а = new int[100];
for (int i = 0; i < 100; i++)
a[i] = i;
หากคุณพยายามเข้าถึงองค์ประกอบ
а [100]
(หรือองค์ประกอบอื่นใดที่มีดัชนีอยู่นอกช่วง 0 ถึง 99) โดยการสร้างอาร์เรย์ที่มีองค์ประกอบ 100 รายการ โปรแกรมจะหยุดทำงานเนื่องจากดัชนีอาร์เรย์อยู่นอกช่วงข้อยกเว้นจะเกิดขึ้น หากต้องการนับจำนวนองค์ประกอบในอาร์เรย์ ให้ใช้วิธีชื่อ
.length
อาร์เรย์ ตัวอย่างเช่น,
for (int i = 0; i < a.length; i++, System.out.println(a[i]));
เมื่อสร้างอาร์เรย์แล้ว จะไม่สามารถเปลี่ยนขนาดได้ (แม้ว่าแน่นอนว่าคุณสามารถเปลี่ยนแต่ละองค์ประกอบได้ก็ตาม) หากคุณต้องการเปลี่ยนขนาดของอาร์เรย์บ่อยครั้งระหว่างการทำงานของโปรแกรม จะเป็นการดีกว่าถ้าใช้โครงสร้างข้อมูลอื่นที่เรียกว่ารายการอาร์เรย์ อาร์เรย์สามารถประกาศได้สองวิธี:
int[] a;
or
int a[];
โปรแกรมเมอร์ Java ส่วนใหญ่ชอบสไตล์แรกเพราะจะแยกประเภทอาร์เรย์
int []
(อาร์เรย์จำนวนเต็ม) ออกจากชื่อตัวแปร ได้ชัดเจนยิ่งขึ้น
ตัวเริ่มต้นอาร์เรย์และอาร์เรย์ที่ไม่มีชื่อ
Java มีสิ่งอำนวยความสะดวกสำหรับการสร้างอาร์เรย์และการเริ่มต้นพร้อมกัน นี่คือตัวอย่างของโครงสร้างวากยสัมพันธ์ดังกล่าว:
int[] smallPrimes = {2, 3, 5, 7, 11, 13};
โปรดทราบว่าในกรณีนี้ไม่จำเป็นต้องใช้โอเปอเร
new
เตอร์ นอกจากนี้ คุณยังสามารถเริ่มต้นอาร์เรย์ที่ไม่มีชื่อได้:
new int[] {16, 19, 23, 29, 31, 37}
นิพจน์นี้จัดสรรหน่วยความจำสำหรับอาร์เรย์ใหม่และเติมด้วยตัวเลขที่ระบุในเครื่องหมายปีกกา ในกรณีนี้ หมายเลขจะถูกคำนวณและขนาดของอาร์เรย์จะถูกกำหนดตามไปด้วย โครงสร้างวากยสัมพันธ์นี้สะดวกในการใช้เพื่อเริ่มต้นอาร์เรย์ใหม่โดยไม่ต้องสร้างตัวแปรใหม่ ตัวอย่างเช่น การแสดงออก
smallPrimes = new int{17, 19, 23, 29, 31, 37};
เป็นสำนวนที่สั้นลง
int[] anonymous = {17, 19, 23, 29, 31, 37};
smallPrimes = anonymous;
คุณสามารถสร้างอาร์เรย์ที่มีขนาดเป็นศูนย์ได้ อาร์เรย์ดังกล่าวจะมีประโยชน์เมื่อเขียนวิธีการประเมินอาร์เรย์ที่กลายเป็นว่างเปล่า อาร์เรย์ที่มีความยาวเป็นศูนย์มีการประกาศดังนี้:
new тип Элементов[]
โปรดทราบว่าอาร์เรย์ดังกล่าวไม่เทียบเท่ากับ
null
วัตถุ
การคัดลอกอาร์เรย์
อาร์เรย์หนึ่งสามารถคัดลอกไปยังอีกอาร์เรย์หนึ่งได้ แต่ตัวแปรทั้งสองจะอ้างอิงถึงอาร์เรย์เดียวกัน
int[] luckyNumbers = smallPrimes;
luckyNumbers[5] = 12;
ผลลัพธ์จะแสดงในรูป 3.1. หากคุณต้องการคัดลอกองค์ประกอบทั้งหมดของอาร์เรย์หนึ่งไปยังอีกอาร์เรย์หนึ่ง คุณควรใช้วิธี arraycopy จาก
System
คลาส การโทรมีลักษณะดังนี้:
System.arraycopy(from, fromlndex, to, tolndex, count);
อาร์เรย์
to
จะต้องมีขนาดใหญ่พอที่จะมีองค์ประกอบทั้งหมดที่จะคัดลอก
รูปที่.3.1. การคัดลอกอาร์เรย์
ตัวอย่างเช่น ตัวดำเนินการที่แสดงด้านล่าง ซึ่งผลลัพธ์จะแสดงในรูป 3.2 สร้างอาร์เรย์สองตัว จากนั้นคัดลอกสี่องค์ประกอบสุดท้ายของอาร์เรย์แรกไปไว้ในองค์ประกอบที่สอง การคัดลอกเริ่มต้นจากตำแหน่งที่สองในอาร์เรย์ต้นทาง และองค์ประกอบที่คัดลอกจะถูกวางในอาร์เรย์เป้าหมายโดยเริ่มจากตำแหน่งที่สาม
int[] smallPrimes = {2, 3, 5, 7, 11, 13};
int[] luckyNumbers = {1001, 1002, 1003, 1004, 1005, 1006, 1007};
System.аrrаусору(smallPrimes, 2, luckyNumbers, 3, 4);
for (int i = 0; i < luckyNumbers.length; i++)
System.out.println(i + ": " + luckyNumbers[i]);
การดำเนินการตามคำสั่งเหล่านี้จะให้ผลลัพธ์ดังต่อไปนี้
0: 1001
1: 1002
2: 1003
3: 5
4: 7
5: 11
6: 13
ข้าว. 3.2. การคัดลอกองค์ประกอบอาร์เรย์
อาเรย์ใน Java แตกต่างอย่างมากจากอาเรย์ใน C++ อย่างไรก็ตาม มันเกือบจะเหมือนกับตัวชี้ไปยังอาเรย์แบบไดนามิก ซึ่งหมายความว่าผู้ปฏิบัติงาน
int[] a = new int[100];
เทียบเท่ากับตัวดำเนินการ
int* = new int[100];
а не
int a[100];
ใน Java
[]
ตัวดำเนินการเริ่มต้นจะตรวจสอบช่วงของการเปลี่ยนแปลงดัชนี นอกจากนี้ Java ไม่มีเลขคณิตของพอยน์เตอร์ คุณไม่สามารถเพิ่มพอยน์เตอร์เพื่อเข้าถึงองค์ประกอบถัดไปของอาร์เรย์ได้
ลิงก์ไปยังแหล่งที่มา: อาร์เรย์ Java
GO TO FULL VERSION