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[] 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. জাভাতে অ্যারে সম্পর্কে তথ্যের সারাংশ

অ্যারে সম্পর্কে আমরা যা জানি তা সংক্ষেপে দেখা যাক:

ঘটনা 1. একটি অ্যারে অনেকগুলি কোষ নিয়ে গঠিত।

ঘটনা 2. আপনি একটি নির্দিষ্ট কক্ষের নম্বর (সূচক) ব্যবহার করে অ্যাক্সেস করেন।

ঘটনা 3. সমস্ত কোষ একই ধরনের।

ঘটনা 4. সমস্ত কোষের প্রাথমিক মান হল 0 (যদি কোষগুলি সংখ্যা সঞ্চয় করে), null(যদি কোষগুলি বস্তুর উল্লেখ সংরক্ষণ করে), বা false(যদি কোষগুলি booleanমান সঞ্চয় করে)। আপনি এই অধ্যায়ে ডিফল্ট মান সম্পর্কে আরও শিখবেন

ঘটনা 5. String[] list শুধুমাত্র একটি পরিবর্তনশীল ঘোষণা. এটি নিজেই ধারক (অ্যারে অবজেক্ট) তৈরি করে না। ভেরিয়েবল ব্যবহার করার জন্য, আপনাকে প্রথমে একটি অ্যারে (ধারক) তৈরি করতে হবে এবং এটি ভেরিয়েবলে বরাদ্দ করতে হবে। নীচের উদাহরণ দেখুন.

ঘটনা 6. যখন আমরা একটি অ্যারে অবজেক্ট (ধারক) তৈরি করি, তখন আমাদের অবশ্যই নির্দেশ করতে হবে যে এটি কত বড়, অর্থাৎ এতে কতগুলি কোষ রয়েছে। এটি একটি বিবৃতি দিয়ে করা হয় যেমন: new TypeName[n];

ঘটনা 7. বৈশিষ্ট্য ব্যবহার করে একটি অ্যারের দৈর্ঘ্য পাওয়া যাবে .length

ঘটনা 8. একটি অ্যারে তৈরি করার পরে, আপনি এটির উপাদানগুলির ধরণ বা এটি সংরক্ষণ করে এমন উপাদানগুলির সংখ্যা পরিবর্তন করতে পারবেন না।

কোড ব্যাখ্যা
String s;
String[] list;
sis null
listisnull
list = new String[10];
int n = list.length;
ভেরিয়েবল একটি বস্তুর একটি রেফারেন্স সংরক্ষণ করে: উপাদান listসমন্বিত একটি স্ট্রিং অ্যারে । হয়10
n10
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উপাদান।