ใน Java อาร์เรย์สองมิติถือ เป็นอาร์เรย์ของอาร์เรย์ กล่าวคือ อาร์เรย์สองมิติเป็นอาร์เรย์หนึ่งมิติพิเศษ และแต่ละองค์ประกอบของอาร์เรย์สองมิติจะเป็นอาร์เรย์หนึ่งมิติ
ประเภทข้อมูลขององค์ประกอบ [] [] ชื่อของอาร์เรย์ = ใหม่ ประเภทข้อมูลขององค์ประกอบ [ความยาวของอาร์เรย์สองมิติ] [ความยาวของอาร์เรย์หนึ่งมิติ];
int[][]arr=newint[3][2];
สถานการณ์ข้างต้นแสดงให้เห็นว่ามีอาร์เรย์หนึ่งมิติสามตัว และอาร์เรย์หนึ่งมิติแต่ละตัวมี 2 องค์ประกอบ
ประเภทข้อมูลขององค์ประกอบ [] [] ชื่อของอาร์เรย์ = ใหม่ ประเภทข้อมูลขององค์ประกอบ [ความยาวของอาร์เรย์สองมิติ] [];
int[][]arr=newint[3][];
สถานการณ์ข้างต้นแสดงให้เห็นว่ามีอาร์เรย์หนึ่งมิติสามตัว แต่จำนวนองค์ประกอบในอาร์เรย์หนึ่งมิติแต่ละตัวนั้นไม่แน่นอน และจำนวนองค์ประกอบในอาร์เรย์หนึ่งมิติแต่ละตัวอาจแตกต่างกัน
ชนิดข้อมูลขององค์ประกอบ [][] ชื่ออาร์เรย์ = {{องค์ประกอบ 1, องค์ประกอบ 2,…}, {องค์ประกอบ 1, องค์ประกอบ 2,…},…};
int[][]arr={{1,2,3},{4,5},{6,7,8,9}};
สถานการณ์ข้างต้นแสดงให้เห็นว่ามีอาร์เรย์หนึ่งมิติจำนวน 3 ตัว อาร์เรย์หนึ่งมิติแรกมี 3 องค์ประกอบ อาร์เรย์หนึ่งมิติที่สองมี 2 องค์ประกอบ และอาร์เรย์หนึ่งมิติที่สามมี 4 องค์ประกอบ แต่ละจำนวนองค์ประกอบใน อาเรย์หนึ่งมิติอาจแตกต่างกันได้
การประกาศอาร์เรย์สองมิติมีสองรูปแบบ:
ชื่ออาร์เรย์ประเภทองค์ประกอบอาร์เรย์[][];
ประเภทองค์ประกอบของอาร์เรย์[] [] ชื่ออาร์เรย์;
ตัวอย่างเช่น:
charcat[][];char[][]แมว;
การเริ่มต้นอาร์เรย์สองมิติจะเหมือนกับอาร์เรย์มิติเดียวกัน มีสองวิธี: การกำหนดค่าเริ่มต้นแบบไดนามิกและการกำหนดค่าเริ่มต้นแบบคงที่
1) ประกาศก่อนแล้วจึงเริ่มต้นแบบคงที่
ชนิดข้อมูลขององค์ประกอบ [][] ชื่ออาร์เรย์สองมิติ ชื่ออาร์เรย์สองมิติ = ชนิดข้อมูลใหม่ขององค์ประกอบ [][]{{องค์ประกอบ 1, องค์ประกอบ 2, องค์ประกอบ 3,...},{รายการค่าใน แถวที่สอง}, …,{รายการค่าในแถว n}};
2) การเริ่มต้นแบบคงที่ขณะประกาศ
ประเภทข้อมูลขององค์ประกอบ [][] ชื่ออาร์เรย์สองมิติ = ใหม่ ประเภทข้อมูลขององค์ประกอบ [][]{{องค์ประกอบ 1, องค์ประกอบ 2, องค์ประกอบ 3,…},{รายการค่าของแถวที่สอง},…,{nth รายการค่าแถว }};
หมายเหตุ : ไม่สามารถเขียนตัวเลขใน "[][]" ใน "ประเภทข้อมูลขององค์ประกอบใหม่ [][]" ทางด้านขวาได้ เนื่องจากจำนวนแถวและคอลัมน์ถูกกำหนดโดยจำนวนองค์ประกอบใน {}
3) วิธีการเขียนแบบง่ายของการเริ่มต้นแบบคงที่ในเวลาเดียวกันของการประกาศ
ชนิดข้อมูลขององค์ประกอบ [][] ชื่ออาร์เรย์สองมิติ = {{องค์ประกอบ 1, องค์ประกอบ 2, องค์ประกอบ 3,…},{รายการค่าในแถวที่สอง},…,{รายการค่าในแถวที่ n}};
ตัวอย่างเช่น:
publicclassMain {publicstaticvoidmain(String[]args){int[][]arr={{1,2,3},{4,5},{6}};//กำหนดอาร์เรย์ System.out.println(arr[0 ][0]);//1System.out.println(arr[1][0]);//4System.out.println(arr[2][0]);//6System.out.println(arr[ 0][1]);//2System.out.println(arr[1][1]);//5System.out.println(arr[2][1]);//อยู่นอกขอบเขต}}
การสร้างการกำหนดค่าเริ่มต้นแบบไดนามิกไม่จำเป็นต้องประกาศความยาวของอาร์เรย์หนึ่งมิติภายใน ดังนั้น ความยาวของอาร์เรย์หนึ่งมิติอาจแตกต่างกัน ดังนั้นจึงมีวิธีการเตรียมใช้งานสองวิธีดังต่อไปนี้
1) การเริ่มต้นแบบไดนามิก 1: กฎตารางสองมิติ
โปรแกรมเมอร์ระบุความยาวของอาร์เรย์และกำหนดค่าในภายหลัง ที่จุดเริ่มต้น ระบบจะให้ค่าเริ่มต้นขององค์ประกอบ ตารางสองมิติปกติหมายความว่าจำนวนคอลัมน์ในแต่ละแถวจะเท่ากัน รูปแบบทั่วไปมีดังนี้ ขั้นแรกให้กำหนดจำนวนแถวและจำนวนคอลัมน์:
ประเภทข้อมูลขององค์ประกอบ [] [] ชื่ออาร์เรย์สองมิติ = ประเภทข้อมูลขององค์ประกอบใหม่ [m] [n];
โดยที่ m แสดงถึงจำนวนอาร์เรย์หนึ่งมิติที่มีอยู่ในอาร์เรย์สองมิตินี้ หรือจำนวนแถวที่มีในตารางสองมิติ n แสดงถึงจำนวนองค์ประกอบที่มีในอาร์เรย์หนึ่งมิติแต่ละอัน หรือจำนวนเซลล์ในนั้น อยู่ในแต่ละแถว
ณ จุดนี้ อาร์เรย์จะถูกสร้างขึ้น จำนวนแถวและคอลัมน์จะถูกกำหนด และองค์ประกอบจะมีค่าเริ่มต้น จากนั้นกำหนดค่าใหม่ให้กับองค์ประกอบ:
ชื่ออาร์เรย์สองมิติ[ตัวห้อยแถว]ตัวห้อยคอลัมน์]=ค่า;
ตัวอย่างเช่น:
publicclassMain{publicstaticvoidmain(String[]args){int[][]arr=newint[3][2];/*กำหนดอาร์เรย์สองมิตินี้มีองค์ประกอบอาร์เรย์หนึ่งมิติ - อาร์เรย์มิติ มี 2 องค์ประกอบ */System.out.println(arr);//ส่งออกชื่อของอาร์เรย์สองมิติ System.out.println(arr[0]);//ส่งออกชื่อขององค์ประกอบแรก ของอาร์เรย์สองมิติและชื่อของอาร์เรย์หนึ่งมิติ System.out.println(arr[0][0]);//ส่งออกองค์ประกอบของอาร์เรย์สองมิติ}}
2) การเริ่มต้นแบบไดนามิก 2: ตารางสองมิติที่ผิดปกติ
ตารางสองมิติที่ผิดปกติหมายความว่าจำนวนคอลัมน์ในแต่ละแถวอาจแตกต่างกัน รูปแบบทั่วไปมีดังนี้
ประเภทข้อมูลขององค์ประกอบ [] [] ชื่ออาร์เรย์สองมิติ = ประเภทข้อมูลขององค์ประกอบใหม่ [จำนวนแถวทั้งหมด] [];
ในขณะนี้ มีการกำหนดเฉพาะจำนวนแถวทั้งหมด และตอนนี้แต่ละแถวเป็นโมฆะ จากนั้นจึงกำหนดจำนวนคอลัมน์ในแต่ละแถว และสร้างอาร์เรย์หนึ่งมิติของแต่ละแถว:
ชื่ออาร์เรย์สองมิติ [ตัวห้อยแถว] = ประเภทข้อมูลขององค์ประกอบใหม่ [จำนวนคอลัมน์ทั้งหมดในแถว];
ในขณะนี้ องค์ประกอบของแถวที่ผ่านใหม่มีค่าเริ่มต้น และแถวที่ไม่ผ่านใหม่ยังคงเป็นโมฆะ ในที่สุด องค์ประกอบจะได้รับการกำหนดค่า:
ชื่ออาร์เรย์สองมิติ[ตัวห้อยแถว]ตัวห้อยคอลัมน์]=ค่า;
หมายเหตุ : ตารางสองมิติที่ไม่สม่ำเสมอหลังจากการประกาศแล้ว ไม่สามารถย่อได้เมื่อเริ่มต้นอาร์เรย์หนึ่งมิติภายใน
//ตารางสองมิติที่ผิดปกติกำหนดอาร์เรย์สองมิติ int[][]arr=newint[3][]; //3 แถว, คอลัมน์ที่ไม่รู้จัก //เตรียมใช้งานค่าองค์ประกอบในอาร์เรย์สองมิติ arr[0]= newint[ ]{1};//ไม่สามารถย่อเป็น arr[0]={1}arr[1]=newint[]{2,3};arr[2]=newint[]{4,5,6 };
การข้ามผ่านของอาเรย์สองมิติจะเหมือนกับอาเรย์หนึ่งมิติ ข้อแตกต่างคือ อันดับแรก จำเป็นต้องมีการวนรอบด้านนอกเพื่อสำรวจแต่ละอาเรย์หนึ่งมิติ รูปแบบทั่วไปจะเป็นดังนี้:
for(inti=0;i<ชื่ออาร์เรย์สองมิติ.length;i++){for(intj=0;j<ชื่ออาร์เรย์สองมิติ[i].length;j++){System.out.print(สองมิติ ชื่ออาร์เรย์ [ i] [j]);} System.out.println ();}