CodeGym /وبلاگ جاوا /Random-FA /آرایه ها در جاوا
John Squirrels
مرحله
San Francisco

آرایه ها در جاوا

در گروه منتشر شد
کابینت ها را در یک انباری تصور کنید. هر کدام از آنها شماره مخصوص به خود را دارند و هر کدام از آنها مقداری از Object Bagage را ذخیره می کنند. یا یک لیست شراب که در آن هر نوع شرابی شماره گذاری شده است و شما با دادن شماره نوشیدنی خود سفارش می دهید. یا فهرستی از دانش آموزان که در آن «آدامز» در رتبه اول و «زیمر» آخرین در آن ثبت شده است. یا لیستی از مسافران یک هواپیما که به هر کدام از آنها صندلی شماره گذاری شده اختصاص داده شده است. در جاوا، آرایه ها اغلب برای کار با چنین ساختارهایی استفاده می شوند، یعنی مجموعه ای از داده های همگن.

آرایه ها در دوره CodeGym

در CodeGym، شما شروع به کار با آرایه ها در سطح 7 از جستجوی Java Syntax می کنید. سه درس به آنها اختصاص داده شده است، و همچنین 8 کار در سطوح مختلف برای تثبیت مهارت های شما در کار با آرایه ها. اما در طول دوره بارها با آرایه ها مواجه خواهید شد (به ویژه، کلاس Array در جست و جوی مجموعه های جاوا و به عنوان بخشی از کار آینده شما مورد مطالعه قرار می گیرد.

آرایه چیست؟

آرایه یک ساختار داده است که عناصری از یک نوع را ذخیره می کند. می توانید آن را به عنوان مجموعه ای از سلول های شماره گذاری شده در نظر بگیرید. می توانید در هر سلول مقداری داده قرار دهید (یک عنصر داده در هر سلول). یک سلول خاص با استفاده از شماره آن قابل دسترسی است. به عدد یک عنصر در آرایه، شاخص نیز می گویند . در جاوا، یک آرایه همگن است، یعنی تمام سلول های آن حاوی عناصری از یک نوع هستند. بنابراین، آرایه‌ای از اعداد صحیح فقط شامل اعداد صحیح ( int )، آرایه‌ای از رشته‌ها - فقط رشته‌ها، و آرایه‌ای از نمونه‌های یک کلاس Dog است که ما ایجاد کرده‌ایم فقط شامل اشیاء Dog است . به عبارت دیگر، جاوا به ما اجازه نمی دهد یک عدد صحیح در خانه اول آرایه، یک رشته در خانه دوم و یک Dog در خانه سوم قرار دهیم.آرایه ها در جاوا - 2

اعلام یک آرایه

چگونه یک آرایه را اعلام می کنید؟

مانند هر متغیری، یک آرایه باید در جاوا اعلان شود. این را می توان به یکی از دو روش انجام داد. آنها معادل هستند، اما راه اول با سبک جاوا سازگارتر است. دومی میراث زبان C است: بسیاری از برنامه نویسان C به جاوا سوئیچ کردند و یک روش جایگزین برای راحتی آنها حفظ شد. جدول هر دو روش اعلان آرایه در جاوا را نشان می دهد:
خیر اعلان یک آرایه، نحو جاوا مثال ها اظهار نظر
1.
dataType[] arrayName;
int[] myArray;

Object[]
arrayOfObjects;
توصیه می شود یک آرایه را به این ترتیب اعلام کنید. این سبک جاوا است.
2.
dataType arrayName[];
int myArray[];

Object
arrayOfObjects[];
روش اعلان آرایه که از C/C++ به ارث رسیده است، در جاوا کار می کند
در هر دو مورد، dataType نوع متغیرهای آرایه است. در مثال ها دو آرایه را اعلام کردیم. یکی int s را ذخیره می کند و دیگری - اشیاء شی . بنابراین، اعلان آرایه دارای نام و نوع (نوع عناصر آرایه) است. ArrayName نام آرایه است.

ایجاد یک آرایه

چگونه یک آرایه ایجاد می کنید؟

مانند هر شی دیگری، می توانید با استفاده از عملگر جدید یک آرایه جاوا ایجاد کنید، یعنی جایی در حافظه برای آن رزرو کنید . به این صورت انجام می شود:
new typeOfArray[length];
که در آن typeOfArray نوع آرایه و طول آن طول آن (یعنی تعداد سلول ها) است که به صورت یک عدد کامل بیان می شود ( int). اما توجه داشته باشید که در اینجا ما فقط حافظه را برای آرایه تخصیص داده ایم - ما آرایه اعلام شده را با هیچ متغیری که قبلاً اعلام شده است مرتبط نکرده ایم. معمولاً یک آرایه ابتدا اعلام می شود و سپس نمونه سازی می شود، به عنوان مثال:
int[] myArray; // Array declaration
myArray = new int[10]; // Create (allocate memory for) an array of 10 ints
در اینجا ما یک آرایه از اعداد صحیح به نام myArray ایجاد کردیم و به کامپایلر اطلاع دادیم که از 10 سلول (که هر کدام شامل یک عدد صحیح است) تشکیل شده است. با این حال، استفاده از نحو اختصاری زیر برای ایجاد یک آرایه بلافاصله پس از اعلام آن بسیار رایج تر است:
int[] myArray = new int [10]; // Declare the array and allocate memory "in one blow"
لطفا توجه داشته باشید:پس از ایجاد یک آرایه با استفاده از عملگر جدید ، سلول های آن حاوی مقادیر پیش فرض هستند. برای انواع عددی (مانند مثال ما)، مقدار پیش‌فرض 0، برای نوع بولی ، false و برای انواع مرجع، null است . بدین ترتیب پس از اجرای این عبارت
int[] myArray = new int[10];
یک آرایه از ده عدد صحیح دریافت می کنیم و تا زمانی که برنامه کاری برای تغییر مقادیر انجام دهد، هر سلول حاوی 0 است.

اطلاعات بیشتر در مورد آرایه ها را می توانید در مقاله " چیزی در مورد آرایه ها " بیابید.

طول آرایه در جاوا

همانطور که در بالا گفتیم، طول یک آرایه تعداد عناصری است که آرایه برای نگهداری آنها طراحی شده است. طول آرایه پس از ایجاد آن قابل تغییر نیست. لطفا توجه داشته باشیدکه عناصر آرایه با شروع از صفر در جاوا شماره گذاری می شوند. بنابراین، اگر آرایه ای از 10 عنصر داشته باشیم، شاخص اولین عنصر 0 و شاخص آخرین عنصر 9 است. آرایه ها در جاوا - 3شما می توانید طول آرایه را با استفاده از متغیر length بدست آورید . مثلا:
int[] myArray = new int[10]; // Create an int array for 10 elements and name it myArray
System.out.println(myArray.length); // Display the array's length, i.e. the number of elements we can put into the array
خروجی:

10

راه اندازی یک آرایه و دسترسی به عناصر آن

اکنون می دانیم که چگونه یک آرایه در جاوا ایجاد کنیم. این فرآیند نه یک آرایه خالی، بلکه یک آرایه پر از مقادیر پیش‌فرض به ما می‌دهد. به عنوان مثال، برای یک آرایه int ، این 0 است، و اگر یک آرایه از هر نوع مرجعی داشته باشیم، پیش‌فرض در هر سلول null است . ما به یک عنصر آرایه (مثلاً برای تنظیم مقدار آن، نمایش آن بر روی صفحه یا انجام عملیاتی با آن) توسط ایندکس آن دسترسی داریم. مقداردهی اولیه آرایه فرآیند پر کردن یک آرایه با مقادیر خاص (غیر از مقدار پیش فرض) است. مثال: بیایید یک آرایه رشته ای برای 4 فصل ایجاد کنیم و آن را با نام فصل ها پر کنیم.
String[] seasons = new String[4]; /* Declare and create an array. Java allocates memory for an array of 4 strings, and each cell is set to null (since String is a reference type) */

seasons[0] = "Winter"; /* We set the first cell, i.e. the cell with index zero, to "Winter". Here we access the zeroth element of the array and write a specific value to it. */
seasons[1] = "Spring"; // We follow a similar procedure for the cell with index 1 (the second cell)
seasons[2] = "Summer"; // ... index 2
seasons[3] = "Autumn"; // and finally, index 3
اکنون نام فصل ها در چهار خانه آرایه ما نوشته می شود. می‌توانیم آرایه را به روش دیگری مقداردهی اولیه کنیم، با ترکیب اعلان و مقداردهی اولیه:
String[] seasons = new String[] {"Winter", "Spring", "Summer", "Autumn"};
علاوه بر این، اپراتور جدید را می توان حذف کرد:
String[] seasons = {"Winter", "Spring", "Summer", "Autumn"};

چگونه یک آرایه را در جاوا روی صفحه نمایش می دهید؟

شما می توانید عناصر آرایه را روی صفحه نمایش (یعنی روی کنسول) با استفاده از یک حلقه for نمایش دهید . روش دیگر و کوتاه‌تر برای نمایش یک آرایه در پاراگراف تحت عنوان « روش‌های مفید برای کار با آرایه‌ها » مورد بحث قرار خواهد گرفت. در همین حال، به این مثال نگاه کنید که در آن آرایه ای با استفاده از یک حلقه نمایش داده می شود:
String[] seasons = new String {"Winter", "Spring", "Summer", "Autumn"};
for (int i = 0; i < 4; i++) {
System.out.println(seasons[i]);
}
برنامه موارد زیر را نمایش خواهد داد:

Winter 
Spring 
Summer 
Autumn

آرایه های یک بعدی و چند بعدی در جاوا

اما اگر بخواهیم نه آرایه ای از اعداد، رشته ها یا اشیاء دیگر، بلکه آرایه ای از آرایه ها را ایجاد کنیم، چه؟ جاوا این امکان را به شما می دهد. نوع آرایه ای که قبلاً با آن آشنا هستیم ( int[] myArray = new int[8] ) به عنوان یک آرایه یک بعدی شناخته می شود. اما آرایه ای از آرایه ها را آرایه دو بعدی می نامند. این مانند جدولی است که دارای شماره ردیف و شماره ستون است. یا اگر اصول جبر خطی را یاد گرفته اید، می توانید آن را به عنوان یک ماتریس در نظر بگیرید. آرایه ها در جاوا - 4چرا به چنین آرایه هایی نیاز داریم؟ خوب، برای برنامه ریزی ماتریس ها و جداول، و همچنین سایر اشیاء که ساختار مشابهی دارند. به عنوان مثال، یک صفحه شطرنج را می توان با یک آرایه 8x8 نشان داد. یک آرایه چند بعدی به صورت زیر اعلام و ایجاد می شود:
Int[][] myTwoDimentionalArray = new int[8][8];
این آرایه دقیقاً 64 عنصر دارد: myTwoDimentionalArray[0][0] ، myTwoDimentionalArray[0][1] ، myTwoDimentionalArray[1][0] ، myTwoDimentionalArray[1][1] و غیره تا myTwoDimentionalArray[7][7] . بنابراین اگر از آن برای نشان دادن یک صفحه شطرنج استفاده کنیم، A1 با myTwoDimentionalArray[0][0] و E2 با myTwoDimentionalArray[4][1] مطابقت دارد . اما تا کجا می توانیم این را پیش ببریم؟ در جاوا می توانید یک آرایه از آرایه ها ... یک آرایه از آرایه ها و ... را مشخص کنید. البته آرایه های سه بعدی و ابعاد بالاتر بسیار کم استفاده می شوند. به عنوان مثال، می توانید از یک آرایه سه بعدی برای برنامه ریزی یک مکعب روبیک استفاده کنید.

روش های مفید برای کار با آرایه ها

جاوا دارای کلاس java.util.Arrays برای کار با آرایه ها است. به طور کلی، رایج ترین عملیات انجام شده بر روی آرایه ها عبارتند از: مقداردهی اولیه (پر کردن با عناصر)، بازیابی یک عنصر (بر اساس شاخص)، مرتب سازی و جستجو. جستجو و مرتب‌سازی آرایه‌ها موضوعی برای روز دیگری است. از یک طرف، نوشتن چندین الگوریتم جستجو و مرتب‌سازی خودتان تمرین خوبی است. از سوی دیگر، تمامی بهترین الگوریتم ها قبلا پیاده سازی و در کتابخانه های استاندارد جاوا گنجانده شده اند و شما می توانید به صورت قانونی از آنها استفاده کنید. در اینجا سه ​​روش مفید در این کلاس آورده شده است.

مرتب سازی یک آرایه

متد void sort(int[] myArray, int fromIndex, int toIndex) یک آرایه عدد صحیح یا زیرآرایه را به ترتیب صعودی مرتب می کند.

جستجوی یک عنصر در یک آرایه

int binarySearch(int[] myArray، int fromIndex، int toIndex، کلید int) . این روش به دنبال عنصر کلیدی در یک آرایه یا زیرآرایه myArray مرتب شده ، از fromIndex به toIndex می‌گردد . اگر مورد پیدا شد، پس از آن شاخص خود را برمی گرداند. در غیر این صورت، (-fromIndex)-1 را برمی گرداند .

تبدیل آرایه به رشته

متد String toString(int[] myArray) یک آرایه را به رشته تبدیل می کند. در جاوا، آرایه ها toString() را باطل نمی کنند . این بدان معنی است که اگر سعی کنید یک آرایه را به طور همزمان (System.out.println(myArray)) به جای یک عنصر در یک زمان مانند پاراگراف با عنوان " نمایش یک آرایه در صفحه " نمایش دهید، دریافت خواهید کرد نام کلاس و هش هگزادسیمال آرایه (تعریف شده توسط Object.toString() ). اگر مبتدی هستید، ممکن است توضیح روش toString را متوجه نشوید . در ابتدا نیازی به این کار ندارید، اما استفاده از این روش نمایش یک آرایه را آسان تر می کند. جاوا به شما این امکان را می دهد که به راحتی یک آرایه را بدون استفاده از حلقه نمایش دهید. مثال زیر این را نشان می دهد.

مثالی با استفاده از sort، binarySearch و toString

بیایید یک آرایه از اعداد صحیح ایجاد کنیم، آن را با استفاده از toString نمایش دهیم ، آن را با استفاده از روش مرتب سازی مرتب کنیم و سپس تعدادی عدد در آن پیدا کنیم.
class Main {
    public static void main(String[] args) {
        int[] array = {1, 5, 4, 3, 7}; // Declare and initialize the array
        System.out.println(array); // Try to display our array without using the toString method — the result is a hexadecimal number
        System.out.println(Arrays.toString(array)); // Display the array correctly
        Arrays.sort(array, 0, 4); // Sort the entire array from the zeroth to the fourth element
        System.out.println(Arrays.toString(array)); // Display the sorted array
        int key = Arrays.binarySearch(array, 5); // Look for the number 5 in the sorted array.
        // The binarySearch method will return the index of the array element we are searching for
        System.out.println(key); // Display the index of the number we searched for
System.out.println(Arrays.binarySearch(array, 0)); // Now try to find a number that isn't in the array,
        // and immediately display the result

    }
}
خروجی:

[I@1540e19d 
[1, 5, 4, 3, 7] 
[1, 3, 4, 5, 7] 
3 
-1
رشته اول تلاشی برای نمایش آرایه بدون استفاده از toString است . دومین آرایه ای است که با استفاده از toString نمایش داده می شود . سومین آرایه مرتب شده است. چهارمین شاخص عددی است که ما برای (5) در آرایه مرتب شده جستجو کردیم (به یاد داشته باشید که از صفر می شماریم، بنابراین شاخص عنصر چهارم آرایه 3 است). در رشته پنجم، -1 را می بینیم. این یک شاخص آرایه نامعتبر است. این نشان می دهد که عددی که ما جستجو کردیم (در این مورد 0) در آرایه نیست.

اطلاعات بیشتر در مورد متدها در کلاس Array

کلاس آرایه ها و کاربرد آن — این مقاله چند روش در کلاس Array را توضیح می دهد.
کلاس Arrays دارای 18 روش مهم برای کار با آرایه ها است.

آرایه ها به طور خلاصه

  • ویژگی های اساسی یک آرایه: نوع داده های قرار داده شده در آن، نام و طول آن.
    آخرین ویژگی زمانی مشخص می شود که آرایه ایجاد می شود (زمانی که حافظه برای آرایه تخصیص داده می شود). دو ویژگی اول زمانی مشخص می شوند که آرایه اعلام شود.

  • اندازه آرایه (تعداد سلول ها) باید یک int باشد

  • تغییر طول یک آرایه پس از ایجاد آن غیرممکن است.

  • یک عنصر آرایه با نمایه آن قابل دسترسی است.

  • عناصر موجود در آرایه ها، مانند هر چیز دیگری در جاوا، با شروع از صفر شماره گذاری می شوند.

  • پس از ایجاد یک آرایه، با مقادیر پیش فرض پر می شود.

  • آرایه ها در جاوا با آرایه در C++ یکسان نیستند. آنها تقریباً مانند نشانگرهای آرایه های پویا هستند.

مطالب مفید در مورد آرایه ها

آیا می خواهید در مورد آرایه ها بیشتر بدانید؟ مقالات زیر را بررسی کنید. مطالب جالب و مفید زیادی در مورد این موضوع وجود دارد.
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION