🗄️
Basics

Arrays

A Row of Boxes
💡 Array numbered lockers की row जैसा है — हर locker का अपना index (0 से शुरू) होता है।

Array एक fixed-size collection है जिसमें same type की multiple values एक साथ store होती हैं।

हर value का अपना "index" होता है, जो 0 से start होता है — पहला element index 0 पर होता है, ना कि 1!

int[] scores = {90, 85, 77, 60};
System.out.println(scores[0]); // 90
🗄️
Array numbered lockers की row जैसा है — हर locker का अपना index (0 से शुरू) होता है।
1 / 6
⚡ झट से Recap
  • Fixed-size row of same-type values
  • Index 0 से start होता है
  • array[i] से value access होती है
इस page में (4 subtopics)

Arrays कई तरीक़ों से बना सकते हो: size के साथ (new int[5], सब values default 0 मिलती हैं — booleans के लिए false, objects के लिए null), या values के साथ directly ({90, 85, 77}, सिर्फ़ declaration के वक़्त ही चलता है), या new keyword के साथ values (new int[]{90, 85, 77}, कहीं भी use हो सकता है जैसे method argument में)।

एक बार array का size decide हो गया, वो fix हो जाता है — array.length से size पता चलता है (ये field है, method नहीं — बिना () के लिखते हैं, String के length() से confuse मत होना)।

int[] a = new int[5];              // sab 0
int[] b = {90, 85, 77};             // direct values
int[] c = new int[]{90, 85, 77};    // explicit new
System.out.println(b.length);       // 3 (property, no parentheses)

Array primitive types के अलावा objects भी store कर सकता है — जैसे String[] या Student[]। याद रखना: object array बनाते वक़्त (new Student[3]) सिर्फ़ 3 "खाली slots" (references) create होती हैं, actual objects नहीं — हर element को individually 'new' से बनाना पड़ता है वरना वो null रहेगा।

इसलिए object array के साथ काम करते वक़्त NullPointerException common है अगर तुम भूल जाते हो हर slot को initialize करना।

Student[] students = new Student[3];
// students[0] abhi null hai!
students[0] = new Student("Aarav"); // har object alag se banana padta hai
System.out.println(students[1]); // null (abhi tak banaya nahi)
⚠️Common Mistake: new Student[3] के तुरंत बाद students[0].getName() call करोगे तो NullPointerException आएगी — array slots खाली (null) होते हैं जब तक explicitly object assign ना करो।

java.util.Arrays class में बहुत useful static methods हैं जो array पर काम करना आसान बनाते हैं। Arrays.sort() ascending order में sort करता है (in-place, original array बदल जाता है)। Arrays.binarySearch() sorted array में बहुत fast search करता है (O(log n)) — लेकिन array sorted होना *ज़रूरी* है वरना ग़लत result दे सकता है।

Arrays.fill() सब (या कुछ) elements को एक value से भर देता है। Arrays.toString() readable print के लिए (वरना println(array) सिर्फ़ memory address दिखाता है!)। Arrays.copyOf() एक नया बड़ा/छोटा array बनाता है, पुराने data के साथ।

Methodक्या करता है
Arrays.sort(arr)Ascending order में sort (in-place)
Arrays.binarySearch(arr, x)Sorted array में fast search
Arrays.fill(arr, x)सब elements को x से भर दो
Arrays.toString(arr)Readable String बनाता है print के लिए
Arrays.copyOf(arr, n)नया array, size n का
Arrays.equals(a, b)दो arrays same हैं क्या (content-wise)
int[] nums = {5, 2, 8, 1};
Arrays.sort(nums);
System.out.println(Arrays.toString(nums)); // [1, 2, 5, 8]
💡Tip: System.out.println(myArray) मत करो — ये कुछ अजीब सा "[I@1b6d3586" print करेगा (type + memory address)। हमेशा Arrays.toString(myArray) use करो readable output के लिए।

Array का size fixed होता है — एक बार बना दिया तो बढ़ा/घटा नहीं सकते। अगर तुम्हे ज़्यादा जगह चाहिए, एक नया बड़ा array बनाना पड़ेगा और पुराना data copy करना पड़ेगा (बिल्कुल यही ArrayList internally करती है automatically!)।

इसलिए जब dynamic size चाहिए (elements add/remove करते रहना हो, size पहले से पता ना हो), तब ArrayList जैसे Collections use करते हैं — वो array को internally manage करके resize करती हैं, तुम्हे manually नहीं करना पड़ता। Array तब best है जब size fixed और पहले से पता हो (better performance, कम memory overhead)।