> For the complete documentation index, see [llms.txt](https://java.howtocode.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://java.howtocode.dev/3/3.1.md).

# পাঠ ৩.১: এরে

\## এরে (Array)

## এরে

এরে হচ্ছে একধরণের কন্টেইনার অবজেক্ট যা অনেকগুলো একিধরণের ডাটা টাইপের এর একটি ফিক্সড সাইজের ভ্যালু ধরে রাখতে পারে।

এরে ডিক্লার করার জন্যে প্রথমে ডাটাটাইপ (কি ধরণের ডাটাটাইপ রাখবে) এর সাথে (\[]) স্কয়ার ব্র্যাকেট তারপর এর একটি ভেরিয়েবল নাম দিতে হয়।

জাভাতে দুই ধরনের এরে রয়েছে ১/ সিঙ্গেল ডাইমেনশনাল এরে ২/ মাল্টিডাইমেনশনাল এরে

সিঙ্গেল ডাইমেনশনাল এরে কে আমরা এইভাবে ডিক্লিয়ার করতে পারিঃ

```java
    //একটি ইন্টিজার এরে 
    int[] anArray;
```

তবে স্কয়ার ব্র্যাকেট ভেরিয়েবল নাম এর পরেও দেওয়া যেতে পারে - উদহরণ-

```java
        int anArray[];
```

এভাবে আমরা অন্য ডাটাটাইপ এর অ্যারে লিখতে পারি -

```java
long[] anArrayOfLongs;
float[] anArrayOfFloats;
double[] anArrayOfDoubles;
```

এরে একটি অবজেক্ট, সুতরাং একে নিউ(new) অপারেটর দিয়ে প্রথমে ক্রিয়েকট করতে হবে।

```java
// এখানে ১০ সাইজের একটি এরে ক্রিয়েট করা হলো 
anArray = new int[10];
```

এই স্ট্যাটমেন্ট যদি না লেখা হয় তাহলে প্রোগ্রামটি কম্পাইল হবে না।

এরপর আমরা এর এর ভেতর ভ্যাল্যু রাখতে পারি।

```java
anArray[0] = 100; //এখানে প্রথম ভ্যাল্যু রাখা হল 
anArray[1] = 200; // এভাবে দ্বিতীয় ভ্যালু
anArray[2] = 300; // এভাবে বাকি গুলো
```

জাভা প্রোগ্রামিং ল্যাঙ্গুয়েজে জিরো বেজড নাম্বারিং( ইনডেক্স শুন্য থেকে শুরু ) করা হয়ে থাকে। অর্থাৎ, এরের এই ভ্যালুগুলো যদি পড়তে চাই তাহলে -

```java
System.out.println("Element 1 at index 0: " + anArray[0]);
System.out.println("Element 2 at index 1: " + anArray[1]);
System.out.println("Element 3 at index 2: " + anArray[2]);
```

এছাড়াও এরে লেখার শর্টকাট পদ্ধতি আছে -

```java
int[] anArray = { 
    100, 200, 300,
    400, 500, 600, 
    700, 800, 900, 1000
};
```

একটি এরে এর মধ্যে আরেকটি অ্যারে রাখা যেতে পারে - নিচে মাল্টিডাইমেনশনাল এরে এর ডিক্লিয়ারেশন এবং ভ্যালু এসাইন করার একটি পদ্ধতি দেখানো হল ।

```java
int[][] anArray = {{1, 2, 3}, {4, 6, 7}, {8, 9}};
```

আমরা যদি একটি এরে এর লেন্থ বা সাইজ জানতে চাই তাহলে –

```java
int length = anArray.length;
```

সুবিধাঃ এরেতে আমরা খুব সহজে ডেটা গুলোকে ছোট থেকে বড় - বড় থেকে ছোট আকারে সাজিয়ে নিতে পারি । খুব সহজেই যেকোনো ইনডেক্সে এক্সেস নিতে পারি । অসুবিধাঃ এরের সাইজ আগে থেকে বলে দিতে হয় এবং এটি ফিক্সড সাইজ তাই রানটাইমে আমরা এটার সাইজ বাড়াতে পারিনা । অবশ্য এই সমস্যা দূর করতে জাভাতে কালেকশন ফ্রেমওয়ার্ক ব্যবহার করতে পারি যেগুলো পর্যায়ক্রমে আমরা আলোচনা করবো ।
