JShell Java 9 का REPL टूल है जो ऐरे घोषणा, आरंभीकरण, और संचालन का त्वरित परीक्षण करने के लिए आदर्श है। Java में ऐरे ऑब्जेक्ट्स हैं जो निश्चित आकार के समान प्रकार के तत्वों को संग्रहीत करते हैं।
ऐरे घोषणा और आरंभीकरण
सिंटैक्स विकल्प
// घोषणा
int[] marks;
int marks[]; // C-शैली, अनुशंसित नहीं
// लिटरल के साथ आरंभीकरण
int[] marks = {80, 75, 95};
// new के साथ आरंभीकरण (डिफ़ॉल्ट मान)
int[] marks = new int[5]; // {0, 0, 0, 0, 0}
// आकार के साथ अनाम ऐरे
int[] marks = new int[] {80, 75, 95};
डिफ़ॉल्ट मान (new के साथ)
jshell> int[] marks = new int[5]
marks ==> int[5] { 0, 0, 0, 0, 0 }
jshell> double[] values = new double[5]
values ==> double[5] { 0.0, 0.0, 0.0, 0.0, 0.0 }
jshell> boolean[] tests = new boolean[5]
tests ==> boolean[5] { false, false, false, false, false }
jshell> class Person { }
| created class Person
jshell> Person[] persons = new Person[5]
persons ==> Person[5] { null, null, null, null, null }
ऐरे एक्सेस और संचालन
इंडेक्सिंग (0-आधारित)
jshell> int[] marks = {80, 75, 95}
marks ==> int[3] { 80, 75, 95 }
jshell> marks[0]
$2 ==> 80
jshell> marks[1]
$3 ==> 75
jshell> marks[2]
$4 ==> 95
jshell> marks[3]
| Exception java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
लंबाई
jshell> marks.length
$5 ==> 3
इटरेशन
jshell> // एन्हांस्ड फॉर लूप
jshell> int sum = 0
sum ==> 0
jshell> for (int mark : marks) {
...> sum += mark;
...> }
sum ==> 250
jshell> // पारंपरिक फॉर लूप
jshell> int[] marks2 = {1, 2, 3, 4, 5, 6, 7, 8}
marks2 ==> int[8] { 1, 2, 3, 4, 5, 6, 7, 8 }
jshell> for (int i = 0; i < marks2.length; i++) {
...> System.out.println(marks2[i]);
...> }
1
2
3
4
5
6
7
8
बहुआयामी ऐरे
jshell> // 2D ऐरे
jshell> int[][] matrix = new int[3][4]
matrix ==> int[3][4] { {0,0,0,0}, {0,0,0,0}, {0,0,0,0} }
jshell> // विषम ऐरे (जैग्ड)
jshell> int[][] jagged = new int[3][]
jagged ==> int[3] { null, null, null }
jshell> jagged[0] = new int[2]
jagged ==> int[3] { int[2] {0,0}, null, null }
jshell> jagged[1] = new int[3]
jagged ==> int[3] { int[2] {0,0}, int[3] {0,0,0}, null }
jshell> // लिटरल के साथ
jshell> int[][] table = {{1,2}, {3,4,5}, {6}}
table ==> int[3][] { int[2] {1,2}, int[3] {3,4,5}, int[1] {6} }
ऐरे यूटिलिटीज (java.util.Arrays)
jshell> import java.util.Arrays
| imported java.util.Arrays
jshell> int[] arr = {5, 2, 8, 1, 9}
arr ==> int[5] { 5, 2, 8, 1, 9 }
jshell> Arrays.toString(arr)
$2 ==> "[5, 2, 8, 1, 9]"
jshell> Arrays.sort(arr)
$3 ==> void
jshell> arr
arr ==> int[5] { 1, 2, 5, 8, 9 }
jshell> Arrays.binarySearch(arr, 5)
$5 ==> 2
jshell> Arrays.fill(arr, 7)
$6 ==> void
jshell> arr
arr ==> int[5] { 7, 7, 7, 7, 7 }
jshell> Arrays.copyOf(arr, 3)
$8 ==> int[3] { 7, 7, 7 }
jshell> Arrays.equals(new int[]{1,2}, new int[]{1,2})
$9 ==> true
jshell> // 2D के लिए
jshell> int[][] matrix = {{1,2}, {3,4}}
jshell> Arrays.deepToString(matrix)
$10 ==> "[[1, 2], [3, 4]]"
ऐरे स्ट्रीम्स (Java 8+)
jshell> import java.util.stream.*
| imported java.util.stream.*
jshell> int[] numbers = {3, 1, 4, 1, 5, 9, 2, 6}
numbers ==> int[8] { 3, 1, 4, 1, 5, 9, 2, 6 }
jshell> Arrays.stream(numbers).sum()
$2 ==> 31
jshell> Arrays.stream(numbers).average()
$3 ==> OptionalDouble[3.875]
jshell> Arrays.stream(numbers).max()
$4 ==> OptionalInt[9]
jshell> Arrays.stream(numbers).filter(n -> n % 2 == 0).toArray()
$5 ==> int[3] { 4, 2, 6 }
jshell> // ऑब्जेक्ट ऐरे के लिए
jshell> String[] words = {"apple", "banana", "cherry"}
jshell> Arrays.stream(words).map(String::toUpperCase).toArray(String[]::new)
$6 ==> String[3] { "APPLE", "BANANA", "CHERRY" }
वरुण ऐरे (Varargs)
jshell> void printNumbers(int... numbers) {
...> for (int n : numbers) System.out.print(n + " ");
...> System.out.println();
...> }
| created method printNumbers(int...)
jshell> printNumbers(1, 2, 3)
1 2 3
jshell> printNumbers()
jshell> int[] arr = {10, 20, 30}
jshell> printNumbers(arr)
10 20 30
सामान्य नुकसान
- निश्चित आकार: निर्माण के बाद आकार नहीं बदल सकता -
ArrayListका उपयोग करें - शालो कॉपी:
arr2 = arr1समान ऐरे साझा करता है - नल तत्व: ऑब्जेक्ट ऐरे में नल हो सकते हैं
- प्रिमिटिव बनाम ऑब्जेक्ट:
int[]≠Integer[](बॉक्सिंग ओवरहेड) - बाउंड्स चेकिंग: अमान्य इंडेक्स पर
ArrayIndexOutOfBoundsException
सारांश
| ऑपरेशन | सिंटैक्स | नोट |
|---|---|---|
| घोषणा | int[] arr; | कोई आकार नहीं |
| लिटरल आरंभीकरण | int[] arr = {1,2,3}; | आकार निहित |
| new के साथ आरंभीकरण | new int[5] | डिफ़ॉल्ट मान (0, false, null) |
| एक्सेस | arr[0] | 0-आधारित इंडेक्स |
| लंबाई | arr.length | फील्ड, मेथड नहीं |
| सॉर्ट | Arrays.sort(arr) | इन-प्लेस |
| कॉपी | arr.clone() / Arrays.copyOf() | डीप कॉपी (1D के लिए) |
| स्ट्रिंग प्रतिनिधित्व | Arrays.toString(arr) | पठनीय प्रिंटिंग के लिए |