Arrays
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]); // 90Arrays kai tareeke se bana sakte ho: size ke saath (new int[5], sab values default 0 milti hain — booleans ke liye false, objects ke liye null), ya values ke saath directly ({90, 85, 77}, sirf declaration ke waqt hi chalta hai), ya new keyword ke saath values (new int[]{90, 85, 77}, kahin bhi use ho sakta hai jaise method argument mein).
Ek baar array ka size decide ho gaya, wo fix ho jaata hai — array.length se size pata chalta hai (ye field hai, method nahi — bina () ke likhte hain, String ke length() se confuse mat hona).
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 ke alawa objects bhi store kar sakta hai — jaise String[] ya Student[]. Yaad rakhna: object array banate waqt (new Student[3]) sirf 3 "khaali slots" (references) create hoti hain, actual objects nahi — har element ko individually 'new' se banana padta hai warna wo null rahega.
Isliye object array ke saath kaam karte waqt NullPointerException common hai agar tum bhool jaate ho har slot ko initialize karna.
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)java.util.Arrays class mein bahut useful static methods hain jo array par kaam karna aasan banate hain. Arrays.sort() ascending order mein sort karta hai (in-place, original array badal jaata hai). Arrays.binarySearch() sorted array mein bahut fast search karta hai (O(log n)) — lekin array sorted hona *zaroori* hai warna galat result de sakta hai.
Arrays.fill() sab (ya kuch) elements ko ek value se bhar deta hai. Arrays.toString() readable print ke liye (warna println(array) sirf memory address dikhata hai!). Arrays.copyOf() ek naya bada/chhota array banata hai, purane data ke saath.
| Method | Kya Karta Hai |
|---|---|
| Arrays.sort(arr) | Ascending order mein sort (in-place) |
| Arrays.binarySearch(arr, x) | Sorted array mein fast search |
| Arrays.fill(arr, x) | Sab elements ko x se bhar do |
| Arrays.toString(arr) | Readable String banata hai print ke liye |
| Arrays.copyOf(arr, n) | Naya array, size n ka |
| Arrays.equals(a, b) | Do arrays same hain kya (content-wise) |
int[] nums = {5, 2, 8, 1};
Arrays.sort(nums);
System.out.println(Arrays.toString(nums)); // [1, 2, 5, 8]Array ka size fixed hota hai — ek baar bana diya to badha/ghata nahi sakte. Agar tumhe zyada jagah chahiye, ek NAYA bada array banana padega aur purana data copy karna padega (bilkul yehi ArrayList internally karti hai automatically!).
Isliye jab dynamic size chahiye (elements add/remove karte rehna ho, size pehle se pata na ho), tab ArrayList jaise Collections use karte hain — wo array ko internally manage karke resize karti hain, tumhe manually karna nahi padta. Array tab best hai jab size fixed aur pehle se pata ho (better performance, kam memory overhead).