
آرایه در جاوا برای ذخیره و نگهداری مجموعهای از اطلاعات با نوع دادهای یکسان استفاده میشود. با استفاده از آرایه میتوانیم به جای تعریف چندین متغیر و ذخیره مقادیر در آنها، با تعریف یک متغیر، چندین مقدار از یک Data Type را نگهداری کنیم. در این مقاله آرایه (Array) را تعریف کرده با نحوه استفاده و کاربردهای آن آشنا خواهیم شد. در انتها نیز چند ترفند در کار با آرایه در جاوا را خواهیم آموخت.
آرایه جاوا چیست ؟
آرایه (Array) یک ساختمان داده است که از چند عنصر با نوع دادهای خاص تشکیل شده است.
هر کدام از این عناصر در آرایه به کمک یک عدد شناسایی میشوند. این عدد در حقیقت مشخص کننده جایگاه آن عنصر در آرایه است.
به شماره خانه در آرایه در اصطلاح برنامه نویسی ایندکس (index) یا اَندیس گفته میشود.
شماره ایندکس از 0 شروع شده و تا اندازه آرایه یکی کمتر ادامه پیدا میکند.
مزیت استفاده از آرایه
- یکی از مزایای اصلی استفاده از آرایه در جاوا، مرتب سازی برنامه و ساختارمند کردن متغیرهاست. به اینصورت که مقادیر مرتبط با هم در یک آرایه و در کنار یکدیگر قرار میگیرند.
- اگر بخواهیم چندین داده را در یک متغیر ذخیره کنیم؛ میبایست از شیوههای دسترسی به حافظه استفاده کنیم. اما در آرایه با استفاده از یک عدد (همان index) به دادههای خود دسترسی خواهیم داشت.
عیب استفاده از آرایه
یکی از اصلیترین معایب آرایه ثابت بودن اندازه آن است! به این معنی که در طول اجرای برنامه، اجازه افزایش ظرفیت یک آرایه را نخواهیم داشت.
البته این مشکل به کمک ساختمان دادههای دیگر رفع شده؛ اما خود Array به تنهایی چنین امکانی را ندارد.
انواع آرایه
در کل دو نوع آرایه وجود دارد.
- آرایه خطی یا تک بعدی
- آرایه چند بعدی
اگر آرایه ما به صورت خطی تعریف شده باشد، یک آرایه تک بعدی داریم.
اما گاهی ممکن است دو یا چند آرایه را به صورت تو در تو استفاده کنیم. در این صورت یک آرایه چند بعدی خواهیم داشت.
برای درک بهتر، ماتریس یک آرایه دو بعدی و مکعب یک آرایه چند بعدی است.

تصویر ساختار آرایه در برنامه نویسی
تعریف آرایه در جاوا
تعریف آرایه در زبان برنامه نویسی جاوا بسیار مشابه تعریف یک متغیر ساده است.
همانطور که میدانید برای تعریف یک متغیر در جاوا، ابتدا نوع دادهای (Data Type) متغیر و سپس نام متغیر را مشخص میکنیم.
در صورتی که بخواهیم عملیات مقداردهی اولیه نیز انجام شود، با قرار دادن علامت انتساب (=) مقدار اولیه آنرا مشخص خواهیم کرد.
برای تعریف آرایه نیز ابتدا باید Data Type مقادیر داخل آنرا مشخص کنیم. سپس یک علامت [] بعد از نوع دادهای قرار داده و اسم متغیر آرایه را مشخص میکنیم.
پس از قرار دادن علامت انتساب، با نوشتن کلمه کلیدی new اقدام به تعریف نوع دادهای در خانههای آرایه میکنیم. سپس Data Type مورد نظر را دوباره نوشته و تعداد خانههای آرایه (ظرفیت) را با عدد درون [] مشخص خواهیم کرد.
به کمک قطعه کد زیر، یک آرایه شش تایی از اعداد صحیح (integer) ساختهایم.
| int[] myArray = new int[6]; |
مقداردهی اولیه آرایه
گاهی نیاز داریم در هنگام تعریف آرایه، به تمام ایندکسهای آن مقادیر مرتبطشان را انتساب دهیم.
برای این کار بعد از علامت انتساب، میتوان مقادیر مورد نظر را درون {} وارد کرد. هر مقدار با , از یکدیگر جدا میشوند.
| int[] myArray = { 3, 7, 6, 4, 2, 9 } |
دسترسی به خانههای آرایه
با مشخص کردن شماره خانه در آرایه، میتوانیم مقدار ذخیره شده در آن را خوانده یا تغییر دهیم.
برای مشخص کردن ایندکس آرایه، پس از آوردن نام آرایه، ایندکس را در [] قرار میدهیم.
| int[] myArray = { 3, 7, 6, 4, 2, 9 } // myArray[0] --> 3 // myArray[4] --> 2 // myArray[6] --> XXX (Invalid Index) |
توجه کنید که اگر خانهای خارج از محدوده اندازه آرایه فراخوانی شود، با خطای IndexOutOfBound مواجه خواهید شد!
مقداردهی عناصر آرایه
تغییر مقادیر یک آرایه با استفاده از علامت انتساب (=) به راحتی قابل انجام است.
ابتدا اندیس آرایه را مشخص کرده و سپس آنرا مقداردهی میکنیم.
در قطعه کد زیر، مقدار موجود در خانه چهارم (ایندکس 3) را به 0 تغییر دادهایم.
استفاده از آرایه جاوا در حلقه
همانطور که در قسمت قبل یاد گرفتیم، با مقدار دهی ایندکس، میتوان به تمام خانههای آرایه دسترسی داشت.
بنابراین اگر در یک حلقه، مقدار ایندکس را تغییر دهیم، میتوانیم روی تمام مقادیر آرایه عملیاتی را انجام دهیم.
استفاده از آرایه در حلقه for
در قطعه کد زیر با استفاده از یک حلقه for، به تمام مقادیر موجود در آرایه دسترسی پیدا کرده و آنها را در کنسول چاپ میکنیم.
| public class TestArrayClass { public static void main(String[] args) { int[] myArray = { 5, 3, 7, 4 }; for ( int i = 0; i < 4; i++ ) { System.out.print( myArray[i] + " "); } } } // output: 5 3 7 4 |
آرایه در حلقه while
مشابه مورد قبلی، اگر یک متغیر برای شمارش ایندکس در حلقه while خود در نظر بگیریم، میتوان به راحتی در آرایه حرکت کرد.
حلقه foreach برای پیمایش آرایه
در JDK 1.5 و بعد از آن یک حلقه جدید مشابه for معرفی شد به نام foreach. حلقه foreach به ما اجازه پیمایش یک آرایه را بدون استفاده از متغیری به عنوان ایندکس میدهد.
استفاده از این نوع حلقه بسیار ساده و راحت است.
فرض کنید مشابه قبل، میخواهیم تمام مقادیر یک آرایه را در خروجی چاپ کنیم.
| for (int itm: myArray) { System.out.print(itm + " "); } |
نحوه کار این حلقه به این صورت است که از ابتدا تا انتهای آرایه، در هر دُور از حلقه، یک مقدار را درون متغیر itm قرار داده و حلقه را اجرا میکند.
ویژگیهای آرایه در جاوا
آرایه در java ویژگیها و متدهایی دارد که به کمک آنها میتوان اطلاعاتی در مورد آرایه به دست آورد.
در ادامه چند نمونهی پر کاربرد آنها را معرفی میکنیم.
اندازه آرایه
با صدا زدن ویژگی length روی آرایه، یک مقدار عددی که اندازه آرایه است را خواهیم داشت.
| public class TestArrayClass { public static void main(String[] args) { int[] myArray = { 5, 3, 7, 4 }; System.out.print( "Array Size: " + myArray.length ); } } // output: // Array Size: 4 |
دو مورد بعدی با افزودن کتابخانه java.util.Arrays به برنامه قابل اجرا خواهند بود.
پس ابتدا این کتابخانه را به ابتدای برنامه خود اضافه میکنیم.
چاپ آرایه در جاوا
گاهی برای دیباگ برنامه، لازم است مقادیر موجود در یک آرایه را در کنسول چاپ کنیم.
اگر آرایه را به عنوان ورودی متد System.out.print() بدهیم، صرفاً آدرس (رفرنس) ذخیره سازی شئ آنرا خواهیم داشت!
| int[] myArray = { 5, 3, 7, 4 }; System.out.print( myArray ); // output: // [I@6d06d69c |
تابعی در کلاس Arrays وجود دارد که یک آرایه را برای چاپ مقادیرش آماده سازی میکند. خروجی این تابع یک رشته String است.
ورودی متد Arrays.toString() یک آرایه است.
| int[] myArray = { 5, 3, 7, 4 }; System.out.print( Arrays.toString(myArray) ); // output: // [5, 3, 7, 4] |
مرتب کردن آرایه در java
بارها شده که بخواهیم مقادیر یک آرایه را به صورت صعودی مرتب کنیم.
برای این کار یک متد در کتابخانه Arrays به نام sort() وجود دارد. این تابع یک آرایه به عنوان ورودی از ما گرفته و مقادیر آنرا به صورت صعودی مرتب میکند.
توجه داشته باشید که تغییرات بر روی آرایه اصلی اعمال شده و آرایه نامرتب را از دست خواهیم داد.
| int[] myArray = { 5, 3, 7, 4 }; Arrays.sort(myArray); // myArray = [3, 4, 5, 7] |
کتابخانه java.util.Arrays متدهای بسیار زیادی دارد که میتوانید تمام آنها را در مستندات آن بررسی کنید.
تعریف آرایه به عنوان ورودی و خروجی متد
اگر بخواهیم متدهایی را برای کار با آرایه ها تعریف کنیم، نیاز داریم ورودی یا خروجی متد به صورت آرایه باشد.
انجام این کار بسیار ساده است و در ادامه نحوه پیاده سازی را خواهیم دید.
تعریف آرایه به عنوان ورودی متد
فرض کنید میخواهیم متدی برای محاسبه میانگین مقادیر یک آرایه بنویسیم.
به این صورت که هر آرایهای به متد ما داده شد، به عنوان خروجی، یک مقدار میانگین به صورت double به ما بدهد.
تعریف چنین متدی به صورت زیر خواهد بود.
| public double average(int[] numbers){ int total = 0; for (int i = 0; i < numbers.length; i++) { total += numbers[i]; } retu total/numbers.length; } |
تعریف خروجی متد به صورت آرایه
حال فرض کنید متد سادهای داریم که مقادیر موجود در هر خانه از آرایه را به توان 2 میرساند. در انتها همان آرایه را به عنوان خروجی به ما خواهد داد.
| public int[] power2(int[] numbers){ for (int i = 0; i < numbers.length; i++) { numbers[i] = numbers[i] * numbers[i]; } retu numbers; } |
آرایه دو بعدی در جاوا
تعریف آرایههای چند بعدی تقریباً شبیه هم هستند. ما در اینجا یک آرایه دو بعدی (ماتریس) ایجاد کرده و نحوه کار با آنرا بررسی میکنیم.
برای تعریف آرایه دو بعدی، هر عنصرِ آرایه میبایست دو اندیسِ جداگانه بگیرد.
اگر آرایه دو بعدی را شبیه یک ماتریس (جدولِ تخت) در نظر بگیریم، اندیس اول مشخص کننده سطر و اندیس دوم برای ستون خواهد بود. (همان x و y)
در زیر یک ماتریس 3 در 3 ایجاد کردهایم.
| int[][] testMatrix = new int[3][3]; |
مقداردهی ماتریس در جاوا
واضح است که برای دسترسی به عناصر یک ماتریس و یا تغییر مقادیر آنها باید هر دو اندیس را مشخص کنیم.
برای مثال، با قطعه کد زیر، تمام مقادیر موجود در سطر اول را مقداردهی میکنیم.
| myMatrix[1][0] = 14; myMatrix[1][1] = 15; myMatrix[1][2] = 16; |
چاپ ماتریس دو بعدی
به عنوان یک تمرین ساده برای کار با آرایه دو بعدی در جاوا، فرض کنید یک ماتریس با طول و عرض نامشخص در اختیار داریم.
با استفاده از قطعه کد زیر، مقادیر آن را به صورت ماتریسی در کنسول چاپ میکنیم.
| public void printMatrix(int[][] mtx){ for(int i=0; i< mtx.length; i++){ for(int j=0; j< mtx[0].length; j++){ System.out.print(mtx[i][j]+" "); } System.out.println(); } } |
جمع بندی آموزش آرایه در جاوا
در این مقاله ابتدا به معرفی آرایه (Array) در زبان برنامه نویسی جاوا (java) پرداختیم. سپس نحوه تعریف و کار با آرایه یک بعدی در جاوا را بررسی کردیم. ترفندهایی برای کارِ بهتر با آرایه جاوا مرور شد. و در نهایت مثالی از یک ماتریس به عنوان آرایه چند بعدی زدیم.
امیدواریم با این ساختمان داده پر استفاده در جاوا به خوبی آشنا شده باشید. اگر سوالی دارید، خوشحال میشیم راهنمای شما باشیم! بخش نظرات برای شماست…
سون لرن • آموزش...
ما را در سایت سون لرن • آموزش دنبال میکنید
برچسب: نویسنده: استخدام کار بازدید: 440 تاريخ: سه شنبه 1 بهمن 1398 ساعت: 19:26