آرایه ها در جاوا — به زبان ساده و گویا + معرفی منابع آموزش زبان جاوا
با پستی دیگر به نام آرایه ها در جاوا در خدمت شما عزیزان هستیم. اگر با زبان برنامه نویسی جاوا آشنایی دارید و میخواهید آرایه ها در جاوا را نیز یاد بگیرید این آموزش را از دست ندهید. در این پست با آرایه و انواع آن در جاوا آشنا خواهیم شد و مثال های مختلفی را برای یادگیری بهتر شما عزیزان خواهیم آورد. با ادامه این مقاله با ما همراه باشید.
آرایه ها در جاوا
قبل از اینکه به بحث آرایه ها در جاوا بپردازیم، بهتر است معرفی کوتاهی در مورد زبان جاوا داشته باشیم. جاوا یک زبان برنامه نویسی محبوب است که به جرأت میتوان گفت در مدت نسبتاً کوتاه به یک زبان فراگیر تبدیل شده است. ساده و شی گرا بودن، عملکرد بالا، تفسیر شده و قابل حمل بودن، پویایی و داشتن قدرت و ایمنی بالا از ویژگیهای زبان برنامه نویسی جاوا میباشد. از پلتفرمهای معرفی شده برای جاوا می توان به JAVA SE ، JAVA EE، JAVA ME، JAVA FX اشاره کرد.
کسانی که به برنامه نویسی جاوا علاقمند هستند اگر سیستمی با چهار گیگابایت رم، نصب JDK، نرم افزار Eclipse یا محیطهای برنامه نویسی جاوا داشته باشند، میتوانند به راحتی با جاوا کار کنند. پلتفرم های جاوا را از وب سایت جاوا میتوانید به صورت رایگان دانلود و نصب کنید. متأسفانه این صفحه توسط شرکت اوراکل برای کشور ایران فیلتر شده است که کاربران به اجبار از فیلتر شکن استفاده میکنند. بعد از دانلود و نصب جاوا میتوانید اولین برنامه را بنویسید و اجرا کنید. اگر هنوز در اول راه هستید و نیازمند یک آموزش کامل برای یادگیری برنامه نویسی جاوا دارید، پیشنهاد ما استفاده از آموزش برنامه نویسی جاوا فرادرس است.
در ادامه بدون هیچ معطلی به آموزش آرایه در جاوا میپردازیم. آرایه از چندین عنصر با نوع داده خاص تشکیل شده است. عنصر در آرایه با کمک یک عدد نشان داده میشود و جایگاه آن عنصر در آرایه را نشان میدهد. در اصطلاحات برنامه نویسی به شماره خانه اندیس یا ایندکس میگویند. شماره اندیس از صفر شروع میشود و تا اندازه آرایه یکی کمتر ادامه دارد.
مزایا و معایب استفاده از آرایه
اگر بخواهیم از مزایای استفاده از آرایه سخن بگوییم مرتب سازی و ساختارمند کردن متغیرها مهمترین ویژگی است. هر یک از مقدارهای مرتبط به هم در یک آرایه در کنار همدیگر قرار میگیرند. برای اینکه بتوان چند نوع داده را در یک متغیر ذخیره کرد، باید از روشهای دسترسی به حافظه استفاده کرد در حالیکه در آرایهها با یک ایندکس میتوان به دادهها دسترسی داشت.
از معایب آرایه نیز میتوان به ثابت بودن اندازه آن اشاره کرد. یعنی زمانی که برنامه در حال اجرا است نمیتوان اندازه و ظرفیت آرایه را افزایش داد.
برای اینکه یک متغیری را در جاوا تعریف کنیم در اولین گام باید نوع داده متغیر و نام متغیر را مشخص کنیم. با گذاشتن علامت (=) مقدار اولیه مشخص خواهد شد. در دومین گام باید نوع داده مقادیر داخل آن را مشخص میکنیم و بعد از علامت [ ] استفاده کرده و اسم متغیر آرایه مشخص میشود.
سومین گام نوشتن کلمه new و تعریف نوع داده است. سپس ظرفیت آرایه را درون [ ] مشخص می کنیم. برای فهمیدن موضوع به مثال زیر دقت کنید:
نام آرایه [ ] نوع داده = new نوع داده [ size]
dataType [] nameOfArray = new dataType [size]
int [] array = new int [10]
انواع آرایه و مقدار دهی اولیه
در پست آرایه ها در جاوا به انواع آرایه رسیدیم. به صورت کلی دو نوع آرایه خط یا تک بعدی و آرایه چند بعدی وجود دارد. وقتی که آرایهها به صورت خطی تعریف شده است یعنی آرایه ما تک بعدی است اما اگر دو یا چند آرایه به صورت تو در تو باشد، آرایه چند بعدی میشود.
در مثال زیر آرایه در جاوا را خواهید دید. در اینجا آرایه را فراخوانی و مقدار دهی اولیه میکنیم.
class Testarray{ public static void main(String args[]){ int a[]=new int[5];//declaration and instantiation a[0]=10;//initialization a[1]=20; a[2]=70; a[3]=40; a[4]=50; //traversing array for(int i=0;i<a.length;i++)//length is the property of array System.out.println(a[i]); }}
و خروجی به شکل زیر خواهد بود:
۱۰ ۲۰ ۷۰ ۴۰ ۵۰
زمانی که میخواهیم آرایه ای را در جاوا تعریف کنیم باید به تمام ایندکسها مقادیر مرتبط را انتساب بدهیم. بعد از علامت = مقادیر را د اخل { } کوتیشن قرار میدهیم و با علامت ویرگول از همدیگر جدا میکنند.
int [] a = { 4, 6, 8, 11, 2}
وقتی شماره خانهها را مشخص کردیم می توان مقادیر ذخیره شده را خواند یا تغییر داد. حالا برای اینکه ایندکس ارایه مشخص کنیم بعد از اینکه نام آرایه آمد ایندکس در [ ] قرار میگیرد.
int [] a = {4, 6, 8, 11, 2} // a [0] -- > 4 // a [2] -- > 8 // a [8] -- > xxx (Invalid Index)
در مثال زیر چگونگی چاپ یک آرایه دیده میشود:
class Testarray1{ public static void main(String args[]){ int a[]={33,3,4,5}; for(int i=0;i<a.length;i++) System.out.println(a[i]); }}
خروجی به شکل زیر خواهد بود:
۳۳ ۳ ۴ ۵
مقدار دهی عناصر در آرایه
برای اینکه بتوانیم مقدار آرایه را تغییر بدهیم از علامت انتساب یا (=) استفاده میکنیم. پس تغییر مقدار آرایه به راحتی انجام میگیرد. برای این کار باید اندیس آرایه مشخص باشد و سپس آن را مقدار دهی کنیم تا مقدار دهی عناصر در آرایه محقق شود. در مثال زیر مقدار موجود در خانه پنجم (اندیس ۴) را به ۲ تغییر دادیم.
a [4] = 2 ;
در مثال زیر نیز میخواهیم مقدار یک عنصر را تغییر دهیم:
cars[0] = "Opel";
public class Main { public static void main(String[] args) { String[] cars = {"Volvo", "BMW", "Ford", "Mazda"}; cars[0] = "Opel"; System.out.println(cars[0]); } }
خروجی به شکل زیر خواهد بود:
Opel
طول عناصر آرایه
برای اینکه بفهمید یک آرایه چند عنصر دارد، از ویژگی length استفاده کنید:
public class Main { public static void main(String[] args) { String[] cars = {"Volvo", "BMW", "Ford", "Mazda"}; System.out.println(cars.length); } }
خروجی به شکل زیر است:
۴
استفاده از حلقه در آرایه
در مبحث قبل گفتیم اگر اندیس را مقدار دهی کنیم، میتوانیم به خانههای آرایه دسترسی داشته باشیم. بنابراین زمانی که مقدار اندیس تغییر کرد میتوان به تمام مقادیر آرایه دسترسی داشت و عملیاتی روی آن انجام داد. می توان با استفاده از حلقه for به تمام عناصر آرایه دسترسی داشت و همچنین میتوان از ویژگی length برای تعیین اینکه حلقه باید چند بار اجرا شود استفاده کرد.
در مثال زیر بیشتر متوجه موضوع خواهید شد:
public class Main { public static void main(String[] args) { String[] cars = {"Volvo", "BMW", "Ford", "Mazda"}; for (int i = 0; i < cars.length; i++) { System.out.println(cars[i]); } } }
در مثال زیر تمام عناصر موجود در آرایه ماشین ها را در خروجی چاپ میکند:
Volvo BMW Ford Mazda
همچنین یک حلقه “for-each” وجود دارد که فقط برای حلقه زدن عناصر در آرایه ها استفاده می شود:
public class Main { public static void main(String[] args) { String[] cars = {"Volvo", "BMW", "Ford", "Mazda"}; for (String i : cars) { System.out.println(i); } } }
خروجی به شکل زیر است:
Volvo BMW Ford Mazda
در مثال بالا میتوان برنامه را به این صورت خواند: برای هر عنصر String (به نام i – در فهرست) در اتومبیلها، مقدار i را چاپ کنید. اگر حلقه for و حلقه for-each را با هم مقایسه کنید، خواهید دید که روش for-each برای نوشتن راحت تر است، نیازی به استفاده از ویژگی length نیست و کد خواناتر است.
برای استفاده از حلقه while نیز اگر متغیری برای شمارش اندیس در نظر بگیرید به راحتی میتوان به آرایه دسترسی پیدا کرد.
آرایه های چند بعدی در جاوا
در آموزش آرایه ها در جاوا به بخش آرایههای چند بعدی رسیدیم. با استفاده از آرایههای دو بعدی و آرایه های سه بعدی به کمک مثال ها با آرایه چند بعدی جاوا آشنا خواهید شد. قبل از اینکه به این بخش وارد شوید مطمئن باشید که آرایه در جاوا را به خوبی یاد گرفتید و سپس این بخش را شروع کنید. آرایه چند بعدی آرایه ای از آرایه ها است. هر عنصر از یک آرایه چند بعدی خود یک آرایه است.
int[][] a = new int[3][4];
در مثال بالا آرایه چند بعدی به نام a ایجاد کردیم. این یک آرایه ۲ بعدی است که می تواند حداکثر ۱۲ عنصر را در خود جای دهد. در تصویر مشاهده میکنید:
نمایه سازی آرایه ها در جاوا با ۰ شروع می شود. بیایید مثال دیگری از آرایه چند بعدی را در نظر بگیریم. این بار یک آرایه سه بعدی ایجاد می کنیم. به مثال زیر توجه کنید:
String[][][] data = new String[3][4][2];
در کد بالا، داده یک آرایه سه بعدی است که می تواند حداکثر ۲۴ عنصر (۳*۴*۲) از نوع String را در خود جای دهد.
در مثال زیر نحوه مقداردهی اولیه یک آرایه دو بعدی در جاوا را میبینید. در این مثال در حال ایجاد یک آرایه چند بعدی به نام a هستیم. از آنجایی که هر جزء از یک آرایه چند بعدی نیز یک آرایه است یعنی a[0]، a[1] و a[2] نیز آرایه هستند.
int[][] a = { {۱, ۲, ۳}, {۴, ۵, ۶, ۹}, {۷}, };
خروجی :
Length of row 1: 3 Length of row 2: 4 Length of row 3: 1
برای اینکه بیشتر متوجه بشید به این مثال دقت کنید. تمام عناصر آرایه دو بعدی با استفاده از حلقه چاپ شده است:
class MultidimensionalArray { public static void main(String[] args) { int[][] a = { {۱, -۲, ۳}, {-۴, -۵, ۶, ۹}, {۷}, }; for (int i = 0; i < a.length; ++i) { for(int j = 0; j < a[i].length; ++j) { System.out.println(a[i][j]); } } } }
خروجی به شکل زیر خواهد بود:
۱ -۲ ۳ -۴ -۵ ۶ ۹ ۷
حتی می توانید از حلقه for-each برای دسترسی به عناصر آرایه چند بعدی استفاده کنید. به مثال زیر دقت کنید:
class MultidimensionalArray { public static void main(String[] args) { // create a 2d array int[][] a = { {۱, -۲, ۳}, {-۴, -۵, ۶, ۹}, {۷}, }; // first for...each loop access the individual array // inside the 2d array for (int[] innerArray: a) { // second for...each loop access each element inside the row for(int data: innerArray) { System.out.println(data); } } } }
خروجی را مشاهده میکنید:
۱ -۲ ۳ -۴ -۵ ۶ ۹ ۷
در مثال بالا، آرایه ۲ بعدی به نام a ایجاد کردیم. سپس برای دسترسی به هر عنصر آرایه، از حلقه for-each استفاده کردیم.
مقدار دهی به آرایه سه بعدی در جاوا
مقدار دهی آرایه سه بعدی نیز مانند آرایه دو بعدی میباشد. آرایه سه بعدی آرایه ای از آرایه های دو بعدی است. ردیف های یک آرایه ۳ بعدی نیز می تواند مانند آرایه دو بعدی از نظر طول متفاوت باشد. اگر به مثال زیر با دقت نکنید خوب متوجه خواهید شد:
int[][][] test = { { {۱, -۲, ۳}, {۲, ۳, ۴} }, { {-۴, -۵, ۶, ۹}, {۱}, {۲, ۳} } };
به مثال دیگری از آرایه سه بعدی نگاه کنید:
class ThreeArray { public static void main(String[] args) { // create a 3d array int[][][] test = { { {۱, -۲, ۳}, {۲, ۳, ۴} }, { {-۴, -۵, ۶, ۹}, {۱}, {۲, ۳} } }; // for..each loop to iterate through elements of 3d array for (int[][] array2D: test) { for (int[] array1D: array2D) { for(int item: array1D) { System.out.println(item); } } } } }
خروجی به شکل زیر خواهد بود:
۱ -۲ ۳ ۲ ۳ ۴ -۴ -۵ ۶ ۹ ۱ ۲ ۳
در زبان جاوا می توان یک آرایه را در آرایه دیگر کپی کرد. تکنیک های مختلفی وجود دارد که می توانید برای کپی کردن آرایه ها در جاوا استفاده کنید.
کپی کردن آرایه ها با استفاده از Assignment Operator
می خواهیم با مثالی این بخش را توضیح دهیم، می توان از عملگر انتساب (=) برای کپی کردن یک آرایه با نام اعداد در آرایه دیگری به نام positiveNumbers استفاده کرد.
class Main { public static void main(String[] args) { int [] numbers = {1, 2, 3, 4, 5, 6}; int [] positiveNumbers = numbers; // copying arrays for (int number: positiveNumbers) { System.out.print(number + ", "); } } }
خروجی را مشاهده کنید:
۱, ۲, ۳, ۴, ۵, ۶
این روش یکی از سادهترین راهها است و کار میکند. اگر عناصر یک آرایه را تغییر دهیم، عناصر مربوط به آرایه های دیگر نیز تغییر می کنند. به مثال زیر توجه کنید:
class Main { public static void main(String[] args) { int [] numbers = {1, 2, 3, 4, 5, 6}; int [] positiveNumbers = numbers; // copying arrays // change value of first array numbers[0] = -1; // printing the second array for (int number: positiveNumbers) { System.out.print(number + ", "); } } }
خروجی:
-۱, ۲, ۳, ۴, ۵, ۶
در مثال بالا می بینید که یک مقدار از آرایه اعداد را تغییر دادیم. وقتی آرایه positiveNumbers را چاپ می کنیم، می بینیم که همان مقدار نیز تغییر کرده است. به این دلیل که هر دو آرایه به یک شیء آرایه اشاره دارند. برای ایجاد اشیاء آرایه جدید در حین کپی کردن آرایه ها، به جای یک deep copy ، به shallow copy نیاز داریم.
کپی آرایه ها در جاوا با استفاده از Looping Construct
در مثال زیر، از حلقه for برای تکرار در هر عنصر از آرایه منبع استفاده کردیم. در هر تکرار، ما عناصر را از آرایه مبدا به آرایه مقصد کپی خواهیم کرد. در اینجا آرایه مبدأ و مقصد به اشیاء مختلف deep copy (کپی عمیق) اشاره دارد. بنابراین، اگر عناصر یک آرایه تغییر کند، عناصر مربوط به آرایه دیگر بدون تغییر باقی خواهد ماند.
import java.util.Arrays; class Main { public static void main(String[] args) { int [] source = {1, 2, 3, 4, 5, 6}; int [] destination = new int[6]; // iterate and copy elements from source to destination for (int i = 0; i < source.length; ++i) { destination[i] = source[i]; } // converting array to string System.out.println(Arrays.toString(destination)); } }
خروجی به شکل زیر خواهد بود:
[۱, ۲, ۳, ۴, ۵, ۶]
در کد زیر از متد ()toString برای تبدیل یک آرایه به رشته استفاده میشود.
System.out.println(Arrays.toString(destination));
سخن آخر در آرایه ها در جاوا
به انتهای مطلب آرایه ها در جاوا رسیدیم. در این پست معرفی کوتاهی در مورد جاوا داشتیم، سپس آرایه و نحوه مقدار دهی به آرایه را توضیح دادیم. آرایه دو بعدی و سه بعدی را نیز همراه با مثال بیان کردیم. امیدواریم با خواندن این مطلب طرز استفاده از آرایه در جاوا را به خوبی یاد گرفته باشید. اگر قصد دارید مباحث دیگر زبان برنامه نویسی جاوا را یاد بگیرید اما نمیدانید از کدام منبع استفاده کنید، میتوانید از آموزشهای فرادرس که کاملترین آموزشهای زبان برنامه نویسی جاوا را دارد استفاده کنید. جهت دریافت این آموزشها میتوانید بر روی لینک زیر کلیک نمایید: