नहीं, Java पारंपरिक अर्थों में (C/C++ की तरह सन्निहित मेमोरी ब्लॉक के रूप में) मल्टी-डायमेंशनल ऐरे सपोर्ट नहीं करता।
- Java ऐरे के ऐरे (arrays of arrays) सपोर्ट करता है।
- Java में, एक टू-डायमेंशनल ऐरे वास्तव में वन-डायमेंशनल ऐरे का ऐरे होता है।
उदाहरण
int[][] arr = new int[2][4];
- अभिव्यक्ति
arr[i]वन-डायमेंशनल ऐरे को चुनती है। - अभिव्यक्ति
arr[i][j]उस ऐरे से एलिमेंट को चुनती है। - प्रत्येक डायमेंशन में ऐरे इंडेक्स शून्य से
length - 1तक होते हैं। जहांlengthदिए गए डायमेंशन में ऐरे की लंबाई है। - कोई ऐरे असाइनमेंट ऑपरेटर नहीं है। एक बार ऐरे आवंटित हो जाने के बाद डायमेंशन की संख्या और प्रत्येक डायमेंशन का आकार निश्चित हो जाता है।
विज़ुअल प्रतिनिधित्व
arr (int[][]) -> [0] -> int[4] (row 0)
[1] -> int[4] (row 1)
प्रत्येक row एक अलग int[] ऑब्जेक्ट है।
महत्वपूर्ण विशेषताएं
- जैग्ड ऐरे (Jagged Arrays): चूंकि प्रत्येक row एक अलग ऐरे ऑब्जेक्ट है, इसलिए प्रत्येक row की लंबाई अलग-अलग हो सकती है।
int[][] jagged = new int[3][]; jagged[0] = new int[2]; jagged[1] = new int[5]; jagged[2] = new int[3]; - प्रारंभिकरण:
// घोषणा और प्रारंभिकरण एक साथ int[][] matrix = { {1, 2, 3}, {4, 5}, {6, 7, 8, 9} }; - लंबाई:
arr.length // rows की संख्या (2) arr[0].length // पहली row के कॉलम्स की संख्या (4)
C/C++ से तुलना
| विशेषता | C/C++ (True 2D Array) | Java (Array of Arrays) |
|---|---|---|
| मेमोरी लेआउट | सन्निहित (contiguous) | असन्निहित (प्रत्येक row अलग ऑब्जेक्ट) |
| Row आकार | सभी rows समान आकार के | प्रत्येक row अलग आकार का हो सकता है |
| पॉइंटर अंकगणित | संभव | नहीं (Java में पॉइंटर्स नहीं) |
| प्रदर्शन | कैश-फ्रेंडली | कम कैश-फ्रेंडली (इनडायरेक्शन के कारण) |
निष्कर्ष: Java "मल्टी-डायमेंशनल ऐरे" को ऐरे-ऑफ-ऐरे के रूप में लागू करता है, जो अधिक लचीलापन (जैग्ड ऐरे) प्रदान करता है लेकिन मेमोरी लेआउट और प्रदर्शन के मामले में C/C++ के वास्तविक मल्टी-डायमेंशनल ऐरे से भिन्न है।