# मल्टी-डायमेंशनल Array, Arrays व Varargs — कोर जावा

Source: https://www.geekswithgeeks.com/hi/core-java/java-arrays-deep-dive

> 2-D व जैग्ड array के साथ काम करें, java.util.Arrays के और उपयोग (binarySearch, deepToString, asList) खोलें, और देखें varargs अंदर से array में कैसे बदलते हैं।

## 2-D व जैग्ड array

2-D array असल में **array का array** है, इसलिए इसकी पंक्तियों की लंबाई बराबर होना ज़रूरी नहीं ("जैग्ड")। `grid[row][col]` से एक्सेस करें; नेस्टेड for-each से चक्र चलाएँ।

```java
int[][] grid = { {1, 2, 3}, {4, 5}, {6} };  // jagged
for (int[] row : grid) {
    for (int v : row) System.out.print(v + " ");
}
// 1 2 3 4 5 6
```

## java.util.Arrays और भी

`Arrays.binarySearch` को सॉर्टेड array चाहिए। `Arrays.asList` array को **निश्चित-आकार** List में लपेटता है (add/remove नहीं)। `Arrays.deepToString` नेस्टेड array को सही छापता है, सादे `toString` के विपरीत।

```java
int[] a = {1, 3, 5, 7};
System.out.println(Arrays.binarySearch(a, 5));  // 2

int[][] grid = {{1, 2}, {3, 4}};
System.out.println(Arrays.deepToString(grid));  // [[1, 2], [3, 4]]

List<String> fixed = Arrays.asList("a", "b");
// fixed.add("c");   // UnsupportedOperationException
```

## Varargs असल में एक array हैं

`int... nums` सिंटैक्टिक शुगर है: मेथड के भीतर, `nums` वास्तव में एक `int[]` **है**। varargs पैरामीटर आख़िरी होना चाहिए, और आप शून्य, कई आर्ग्युमेंट या सीधे array दे सकते हैं।

```java
static void report(String label, int... values) {
    System.out.println(label + ": " + values.length);
}

report("a");                 // a: 0
report("b", 1, 2, 3);        // b: 3
report("c", new int[]{9});   // c: 1
```
