จากการศึกษาในส่วนที่แล้ว เรารู้ว่าไม่มีแนวคิดเกี่ยวกับอาร์เรย์หลายมิติใน Java มีเพียงอาร์เรย์หนึ่งมิติเท่านั้น เราสามารถเข้าใจอาร์เรย์หลายมิติเป็นอาร์เรย์ของอาร์เรย์ได้ ดังนั้น อาร์เรย์ที่ไม่ปกติ จึงได้มา
ตัวอย่างเช่น อาร์เรย์สองมิติ 4×3 ปกติมี 12 องค์ประกอบ แต่อาร์เรย์สองมิติ 4×3 แบบไม่สม่ำเสมอไม่จำเป็นต้องมีองค์ประกอบจำนวนมากขนาดนั้น ตัวอย่างเช่น เริ่มต้นอาร์เรย์ที่ผิดปกติแบบคงที่ :
intArray[][]={{1,2},{3},{4,5,6},{7,8}};
เราเรียกอาร์เรย์สองมิติและสูงกว่าอาร์เรย์มิติสูง ดังนั้นอาร์เรย์มิติสูงด้านบนจะมี 4 องค์ประกอบ แต่จำนวนองค์ประกอบของอาร์เรย์มิติต่ำจะแตกต่างกัน มี 1 องค์ประกอบ อาร์เรย์ที่ 3 มี 3 องค์ประกอบ และอาร์เรย์ที่ 4 มี 2 องค์ประกอบ นี่คือสิ่งที่เราเรียกว่าอาร์เรย์ที่ไม่ปกติ
การเริ่มต้นอาร์เรย์ที่ผิดปกติแบบ ไดนามิกนั้นยุ่งยากกว่าเล็กน้อย มันไม่สามารถใช้คำสั่ง int[4][3] ใหม่ได้โดยตรง เราจำเป็นต้องเริ่มต้นอาร์เรย์มิติสูงก่อน จากนั้นจึงเริ่มต้นอาร์เรย์มิติต่ำแยกกัน ตัวอย่างเช่น:
intArray[][]=newint[4][];//เตรียมใช้งานอาร์เรย์มิติสูงก่อนเป็น 4Array[0]=newint[2];//เตรียมใช้งานอาร์เรย์มิติต่ำ Array[1]=newint[1] ;Array[ ทีละอัน 2]=newint[3];Array[3]=newint[2];
จากนั้นหลังจากที่โค้ดข้างต้นเริ่มต้นอาร์เรย์ เราจะรู้ได้ว่าไม่มีองค์ประกอบ 12 องค์ประกอบ แต่มีเพียง 8 องค์ประกอบ โดยที่ตัวห้อยคือ [0][2], [1][1], [1][2] และ [ 3][2] ไม่มีอยู่ เมื่อเราพยายามเข้าถึง ข้อยกเว้นตัวห้อยที่อยู่นอกขอบเขต จะถูกส่งออกไป
หมายเหตุ : ข้อยกเว้นนอกขอบเขตของตัวห้อย (ArrayIndexOutOfBoundsException) จะถูกส่งออกมาเมื่อพยายามเข้าถึงตัวห้อยที่ไม่มีอยู่จริง ตัวอย่างเช่น สมมติว่า Array หนึ่งมิติมี 12 องค์ประกอบ ดังนั้นนิพจน์ Array[12] จะทำให้เกิดข้อยกเว้นนอกขอบเขตของตัวห้อย เนื่องจากตัวห้อยของอาร์เรย์เริ่มต้นจาก 0 และตัวห้อยขององค์ประกอบตัวสุดท้ายควรเป็น ความยาวอาเรย์ลบด้วยความยาวอาเรย์ 1 ดังนั้นจึงไม่มีองค์ประกอบที่เข้าถึงโดย Array[12]