JavaRush /จาวาบล็อก /Random-TH /อาร์เรย์ Java
articles
ระดับ

อาร์เรย์ Java

เผยแพร่ในกลุ่ม

อาร์เรย์

อาร์เรย์เป็นโครงสร้างข้อมูลที่เก็บค่าประเภทเดียวกัน เข้าถึงองค์ประกอบอาร์เรย์แต่ละรายการได้โดยใช้ดัชนีจำนวนเต็ม ตัวอย่างเช่น ถ้า 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; //Заполняет массив числами от 0 до 99
หากคุณพยายามเข้าถึงองค์ประกอบа [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; //Теперь элемент smallPrimes[5]также equals 12
ผลลัพธ์จะแสดงในรูป 3.1. หากคุณต้องการคัดลอกองค์ประกอบทั้งหมดของอาร์เรย์หนึ่งไปยังอีกอาร์เรย์หนึ่ง คุณควรใช้วิธี arraycopy จากSystemคลาส การโทรมีลักษณะดังนี้:
System.arraycopy(from, fromlndex, to, tolndex, count);
อาร์เรย์toจะต้องมีขนาดใหญ่พอที่จะมีองค์ประกอบทั้งหมดที่จะคัดลอก อาร์เรย์ Java - 2
รูปที่.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
อาร์เรย์ Java - 3
ข้าว. 3.2. การคัดลอกองค์ประกอบอาร์เรย์
อาเรย์ใน Java แตกต่างอย่างมากจากอาเรย์ใน C++ อย่างไรก็ตาม มันเกือบจะเหมือนกับตัวชี้ไปยังอาเรย์แบบไดนามิก ซึ่งหมายความว่าผู้ปฏิบัติงาน
int[] a = new int[100]; //Java
เทียบเท่ากับตัวดำเนินการ
int* = new int[100]; //C++,
а не
int a[100]; //C++
ใน Java []ตัวดำเนินการเริ่มต้นจะตรวจสอบช่วงของการเปลี่ยนแปลงดัชนี นอกจากนี้ Java ไม่มีเลขคณิตของพอยน์เตอร์ คุณไม่สามารถเพิ่มพอยน์เตอร์เพื่อเข้าถึงองค์ประกอบถัดไปของอาร์เรย์ได้ ลิงก์ไปยังแหล่งที่มา: อาร์เรย์ Java
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION