1. मेमरीमधील अॅरे

मागील उदाहरणांमध्ये, उदाहरणे थोडी चुकीची होती.

अॅरे तयार करताना (स्ट्रिंग तयार करताना), मेमरीचे दोन वेगळे ब्लॉक वाटप केले जातात: एक अॅरे (कंटेनर) स्वतः साठवण्यासाठी आणि दुसरा ब्लॉक त्याचा पत्ता संग्रहित करणाऱ्या व्हेरिएबलसाठी . खालील चित्र हे स्पष्टीकरण दर्शवते:

मेमरी मध्ये अॅरे

घटकांच्या अॅरेसाठी वाटप केलेली मेमरी 10 intआणि अॅरेचा पत्ताint[] संग्रहित करणारे व्हेरिएबल हिरव्या रंगात दाखवले जाते.int

तुलनेसाठी, intमूल्य संचयित करणारे एक सामान्य चल 199निळ्या रंगात दर्शविले आहे.

स्मृतीमध्ये तार साठवून ठेवण्याची ही थोडीशी आठवण आहे, नाही का?

ते बरोबर आहे, तार. आणि जसे तुम्ही स्ट्रिंग्ससह काम करता तेव्हा तुम्ही एकमेकांना अॅरे व्हेरिएबल्स नियुक्त करू शकता:

कोड स्पष्टीकरण
int[] a = new int[10];
a[2] = 4;
a[7] = 9;
int[] b = a;

a[9] = b[2] + a[7];
घटकांची अ‍ॅरे तयार करा 10 int. निर्देशांकासह सेलला
मूल्य नियुक्त करा . निर्देशांकासह सेलला मूल्य नियुक्त करा . व्हेरिएबलमध्ये , व्हेरिएबलमध्ये संग्रहित पत्ता सेव्ह करा . आता आणि मेमरीमधील समान अॅरे ऑब्जेक्टकडे निर्देश करा. इंडेक्ससह अॅरे ऑब्जेक्टच्या सेलमध्ये , सेलमध्ये संग्रहित केलेल्या मूल्यांची बेरीज लिहा (जे मूल्य संग्रहित करते ) आणि (जे मूल्य संग्रहित करते ). 42
97
ba
ab
92479

अॅरे ऑब्जेक्ट जिथे होता तिथेच राहतो आणि aआणि bव्हेरिएबल्स एकाच ऑब्जेक्टचा समान पत्ता (संदर्भ) संग्रहित करतात. चित्र पहा:

मेमरी मधील अॅरे 2

2. अॅरेसह कार्य करण्याबद्दल अधिक तपशील

तुम्ही पूर्णपणे कोणत्याही प्रकारच्या घटकांची अ‍ॅरे तयार करू शकता. हे करण्यासाठी, टाइप नावाच्या नंतर फक्त चौरस कंस लिहा. सर्वसाधारणपणे, अॅरे तयार करणे असे दिसते:

type[] name = new type[number];

जेथे type हा घटकांचा प्रकार आहे आपण अॅरेमध्ये साठवू. नाव हे व्हेरिएबलचे नाव आहे ज्याचा वापर आपण अॅरेचा संदर्भ देण्यासाठी करू आणि संख्या म्हणजे अॅरेमधील सेलची संख्या.

वरील उदाहरण अॅरे व्हेरिएबल आणि अॅरे ऑब्जेक्ट तयार करण्यासाठी कॅनोनिकल फॉर्म आहे. प्रत्यक्षात या दोन स्वतंत्र संस्था आहेत.

तुम्ही अॅरे ऑब्जेक्टपासून वेगळे अॅरे व्हेरिएबल तयार करू शकता:

type[] name;
name = new type[number];

आणि आणखी एक मुद्दा जो क्षुल्लक नाही:

तुम्ही इंडेक्स अॅरे आणि अॅरे घटकांची संख्या म्हणून व्हेरिएबल्स किंवा संपूर्ण एक्सप्रेशन वापरू शकता .

उदाहरणे:

कोड स्पष्टीकरण
int n = 100;
int[] a = new int[n];
nघटकांची अ‍ॅरे तयार करा
int n = 100;
int[] a = new int[n * 2 + 3];
203घटकांसह अॅरे तयार करा
int n = 100;
int[] a = new int[n];
a[n-1] = 2;
a[n-2] = 3;
a[n/5] = a[n-1] + a[n-2]


// a[99] = 2;
// a[98] = 3;
// a[20] = a[99] + a[98];
महत्वाचे:
तसे, तुम्हाला हे माहित असले पाहिजे की जर तुम्ही अ‍ॅरेसाठी अस्तित्वात नसलेल्या इंडेक्सचा वापर करून अ‍ॅरे सेलमध्ये प्रवेश करण्याचा प्रयत्न केला (आमच्या उदाहरणात, याचा अर्थ कोणताही पूर्णांक श्रेणीत नाही), तर प्रोग्राम क्रॅश 0..99होईल ArrayIndexOfBoundException, याचा अर्थ निर्देशांक अॅरेच्या सीमांच्या बाहेर होता.

3. अॅरेची लांबी

तुम्ही मागील उदाहरणात पाहिल्याप्रमाणे, तुम्ही स्वतः एक अॅरे व्हेरिएबल तयार करू शकता आणि नंतर कोडमध्ये कुठेतरी त्याला मूल्य (अॅरे ऑब्जेक्टचा संदर्भ) नियुक्त करू शकता. आपण हे देखील करू शकता:

कोड स्पष्टीकरण
int[] array;
if (a < 10)
   array = new int[10];
else
   array = new int[20];
एक अॅरे व्हेरिएबल तयार करा ज्याचा प्रकार आहे int[]
जर aव्हेरिएबल पेक्षा कमी असेल 10तर घटकांचा
अॅरे तयार करा 10.
अन्यथा घटकांची
अ‍ॅरे तयार करा20

आणि आता अशा अॅरेसह आपण आणखी काय करू शकता? त्यात किती घटक आहेत हे कसे कळेल?

यामध्ये मदत करण्यासाठी, अॅरेमध्ये एक विशेष गुणधर्म (व्हेरिएबल) नावाचा असतो length. आपण या अभिव्यक्तीचा वापर करून अॅरेची लांबी शोधू शकता:

array.length;

येथे arrayअॅरे व्हेरिएबलचे नाव आहे आणि lengthअॅरेच्या गुणधर्माचे नाव आहे. मालमत्तेचे मूल्य lengthबदलले जाऊ शकत नाही: lengthमालमत्ता स्वतःच इतर व्हेरिएबल्सना नियुक्त केली जाऊ शकते, परंतु त्यास काहीही नियुक्त केले जाऊ शकत नाही (जर आपण हे करण्याचा प्रयत्न केला तर, प्रोग्राम संकलित होणार नाही).

आपण मागील उदाहरणासह पुढे चालू ठेवू शकतो:

कोड स्पष्टीकरण
int[] array;
if (a < 10)
   array = new int[10];
else
   array = new int[20];
for (int i = 0; i < array.length; i++)
{
   System.out.println(array[i]);
}
एक अॅरे व्हेरिएबल तयार करा ज्याचा प्रकार आहे int[]
जर aव्हेरिएबल पेक्षा कमी असेल 10तर घटकांचा
अॅरे तयार करा 10.
अन्यथा घटकांचा
अॅरे तयार करा अॅरेच्या सर्व घटकांवर लूप करा: ते लांबीपर्यंत20
0array.length - 1

4. Java मधील अॅरे बद्दल तथ्यांचा सारांश

अ‍ॅरे बद्दल आपल्याला काय माहित आहे ते पाहूया:

तथ्य 1. अॅरेमध्ये अनेक सेल असतात.

तथ्य 2. तुम्ही विशिष्ट सेलचा नंबर (इंडेक्स) वापरून प्रवेश करता.

तथ्य 3. सर्व पेशी एकाच प्रकारच्या असतात.

वस्तुस्थिती 4. सर्व पेशींचे प्रारंभिक मूल्य 0 आहे (जर पेशी संख्या संग्रहित करतात), null(जर पेशी वस्तू संदर्भ संग्रहित करतात), किंवा false(जर पेशी booleanमूल्ये संग्रहित करतात). आपण या प्रकरणात डीफॉल्ट मूल्यांबद्दल अधिक जाणून घ्याल .

वस्तुस्थिती 5. String[] list ही फक्त व्हेरिएबलची घोषणा आहे. हे स्वतः कंटेनर (अॅरे ऑब्जेक्ट) तयार करत नाही. व्हेरिएबल वापरण्यासाठी, तुम्हाला प्रथम अॅरे (कंटेनर) तयार करणे आणि ते व्हेरिएबलला नियुक्त करणे आवश्यक आहे. खालील उदाहरण पहा.

तथ्य 6. जेव्हा आपण अॅरे ऑब्जेक्ट (कंटेनर) बनवतो, तेव्हा आपण ते किती मोठे आहे हे सूचित केले पाहिजे, म्हणजे त्यात किती सेल आहेत. हे अशा विधानासह केले जाते: new TypeName[n];

तथ्य 7. गुणधर्म वापरून अॅरेची लांबी शोधली जाऊ शकते .length.

वस्तुस्थिती 8. अॅरे तयार केल्यानंतर, तुम्ही त्यातील घटकांचा प्रकार किंवा ते संचयित केलेल्या घटकांची संख्या बदलू शकत नाही.

कोड स्पष्टीकरण
String s;
String[] list;
sआहे null
list_null
list = new String[10];
int n = list.length;
व्हेरिएबल listऑब्जेक्टचा संदर्भ संग्रहित करते: 10घटकांचा समावेश असलेला स्ट्रिंग अॅरे.
nआहे10
list = new String[0];

आता घटकांच्या listअॅरेचा संदर्भ देते 0. अॅरे अस्तित्वात आहे, परंतु ते कोणतेही घटक संचयित करू शकत नाही.

list = null;
System.out.println(list[1]);
अपवाद (प्रोग्राम एरर) टाकला जाईल, म्हणजे प्रोग्राम क्रॅश होईल. listचा संदर्भ साठवतोnull
list = new String[10];
System.out.println(list[10]);
एक अ‍ॅरे-आउट-ऑफ-बाउंड अपवाद (प्रोग्राम त्रुटी) व्युत्पन्न केला जाईल.
जर एखादे घटक/सेल listसंचयित करत असेल 10, तर वैध निर्देशांक आहेत: 0 1 2 3 4 5 6 7 8 910घटक.