Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

JShell में Java 9: ऐरे आरंभीकरण और संचालन

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)पठनीय प्रिंटिंग के लिए
  1. - जावा 9 में JShell क्या है?

    JShell जावा 9 संस्करण में पेश की गई एक नई अवधारणा है। यह जावा को REPL (रीड-इवैल-प्रिंट-लूप) क्षमता प्रदान करता है। JShell का उपयोग करके, हम इसे कंपाइल किए बिना जावा-आधारित लॉजिक और एक्सप्रेशन का परीक्षण कर सकते हैं। REPL तत्काल फीडबैक लूप के रूप में कार्य करता है और उस विशेष भाषा में उत्पादकता पर बह

  1. - Java में ऑब्जेक्ट पैरामीटर्स के भीतर ऐरे कैसे आरंभ करें?

    एक क्लास के अंदर घोषित ऐरे इंस्टेंस वेरिएबल को कंस्ट्रक्टर या सेटर मेथड के माध्यम से आरंभ किया जा सकता है, किसी अन्य वेरिएबल की तरह।उदाहरण 1: कंस्ट्रक्टर के माध्यम सेpublic class Student { String name; int age; String[] subjects; Student(String name, int age, String[] subjects) {

  1. - Java में बूलियन ऐरे को कैसे इनिशियलाइज़ करें?

    बूलियन ऐरे का उपयोग केवल बूलियन डेटा टाइप मानों को संग्रहीत करने के लिए किया जा सकता है और बूलियन ऐरे का डिफ़ॉल्ट मान false है। बूलियन्स का ऐरे false से इनिशियलाइज़ होता है और रेफरेंस टाइप्स के ऐरे null से इनिशियलाइज़ होते हैं। कुछ मामलों में, हमें बूलियन ऐरे के सभी मानों को true या false से इनिशियल