در Java، آرایهها روشی برای ذخیرهی چندین مقدار از یک نوع در یک ساختار واحد هستند. برخلاف سایر ساختارهای داده، اندازهی آرایه پس از ساختهشدن ثابت میماند. میتوان عناصر را با استفاده از یک «اندیس» به آرایه نسبت داد یا از آن بازیابی کرد. آرایههای Java از اندیسگذاری از صفر استفاده میکنند: اندیس اولین عنصر ۰ است، اندیس دومین عنصر ۱ و به همین ترتیب.
نحوهی نگارش استاندارد برای مقداردهی اولیه به یک آرایه چنین است:
type[] variableName = new type[size];
type نوع عناصر آرایه است که میتواند یک نوع اولیه (مثلاً int) یا یک کلاس (مثلاً String) باشد.
size تعداد عناصری است که این آرایه در خود نگه میدارد (که بعداً قابل تغییر نیست). پس از ایجاد آرایه، عناصر به مقادیر پیشفرض خود مقداردهی اولیه میشوند (معمولاً 0، false یا null).
// Declare array with explicit size (size is 2)
int[] twoInts = new int[2];
همچنین میتوان آرایهها را با یک نگارش کوتاه تعریف کرد که هم اجازهی ایجاد آرایه و هم تعیین مقدار آن را میدهد:
// Two equivalent ways to declare and initialize an array (size is 3)
int[] threeIntsV1 = new int[] { 4, 9, 7 };
int[] threeIntsV2 = { 4, 9, 7 };
چون کامپایلر اکنون میتواند تشخیص دهد که آرایه چند عنصر خواهد داشت، میتوان طول را حذف کرد.
میتوان عناصر آرایه را با نگارش اندیس درون کروشه نسبت داد و به آنها دسترسی داشت:
// Assign second element by index
twoInts[1] = 8;
// Retrieve the second element by index and assign to the int element
int secondElement = twoInts[1];
دسترسی به اندیسی خارج از اندیسهای معتبر آرایه، به IndexOutOfBoundsException منجر میشود.
میتوان آرایهها را با فراخوانی متدها یا ویژگیهای یک نمونهی آرایه، یا با استفاده از متدهای استاتیک تعریفشده در کلاس Arrays دستکاری کرد (که معمولاً فقط در کدهای جنریک استفاده میشود). ویژگی length طول آرایه را نگه میدارد. دسترسی به آن به این صورت است:
int arrayLength = someArray.length;
Java همچنین یک کلاس کاربردی مفید به نام java.util.Arrays دارد که متدهای بسیار مفیدی مرتبط با آرایه در اختیار میگذارد (مثلاً Arrays.equals).
Java همچنین از آرایههای چندبعدی مانند int[][] arr = new int[3][4]; پشتیبانی میکند که میتوانند بسیار مفید باشند.
اینکه یک آرایه در واقع یک مجموعه هم هست یعنی علاوه بر دسترسی به مقادیر با اندیس، میتوانید با یک حلقهی for-each روی همهی مقادیر آن پیمایش کنید:
char[] vowels = { 'a', 'e', 'i', 'o', 'u' };
for(char vowel: vowels) {
// Output the vowel
System.out.print(vowel);
}
// => aeiou
اگر میخواهید کنترل بیشتری بر اینکه روی کدام مقادیر پیمایش کنید داشته باشید، میتوان از یک حلقهی for استفاده کرد:
char[] vowels = { 'a', 'e', 'i', 'o', 'u' };
for (int i = 0; i < 3; i++) {
// Output the vowel
System.out.print(vowels[i]);
}
// => aei
شما یک پرندهنگر مشتاق هستید که تعداد پرندگانی را که در هفت روز گذشته به باغتان آمدهاند پیگیری میکنید.
شش کار دارید که همهشان به تعداد پرندگانی مربوط میشوند که به باغتان آمدهاند.
برای مقایسه، همیشه یک نسخه از تعداد پرندگان هفتهی گذشته را کنار دستتان نگه میدارید که عبارت بودند از: ۰، ۲، ۵، ۳، ۷، ۸ و ۴. متد BirdWatcher.getLastWeek() را پیادهسازی کنید که تعداد پرندگان هفتهی گذشته را برمیگرداند:
BirdWatcher.getLastWeek();
// => [0, 2, 5, 3, 7, 8, 4]
متد BirdWatcher.getToday() را پیادهسازی کنید تا تعداد پرندگانی را که امروز به باغتان آمدهاند برگرداند. تعداد پرندگان بر اساس روز مرتب شده است؛ اولین عنصر مربوط به قدیمیترین روز است و آخرین عنصر تعداد امروز.
int[] birdsPerDay = { 2, 5, 0, 7, 4, 1 };
BirdWatcher birdCount = new BirdWatcher(birdsPerDay);
birdCount.getToday();
// => 1
متد BirdWatcher.incrementTodaysCount() را پیادهسازی کنید تا تعداد امروز را افزایش دهد:
int[] birdsPerDay = { 2, 5, 0, 7, 4, 1 };
BirdWatcher birdCount = new BirdWatcher(birdsPerDay);
birdCount.incrementTodaysCount();
birdCount.getToday();
// => 2
متد BirdWatcher.hasDayWithoutBirds() را پیادهسازی کنید که اگر روزی بوده است که هیچ پرندهای به باغ نیامده باشد، true را برمیگرداند؛ در غیر این صورت false را برگردانید:
int[] birdsPerDay = { 2, 5, 0, 7, 4, 1 };
BirdWatcher birdCount = new BirdWatcher(birdsPerDay);
birdCount.hasDayWithoutBirds();
// => true
متد BirdWatcher.getCountForFirstDays() را پیادهسازی کنید که تعداد پرندگانی را برمیگرداند که از ابتدای هفته به باغتان آمدهاند، با این محدودیت که شمارش فقط برای تعداد مشخصشده از روزهای ابتدای هفته انجام شود.
int[] birdsPerDay = { 2, 5, 0, 7, 4, 1 };
BirdWatcher birdCount = new BirdWatcher(birdsPerDay);
birdCount.getCountForFirstDays(4);
// => 14
بعضی روزها شلوغتر از بقیه هستند. روز شلوغ روزی است که پنج پرنده یا بیشتر به باغتان آمده باشند.
متد BirdWatcher.getBusyDays() را پیادهسازی کنید تا تعداد روزهای شلوغ را برگرداند:
int[] birdsPerDay = { 2, 5, 0, 7, 4, 1 };
BirdWatcher birdCount = new BirdWatcher(birdsPerDay);
birdCount.getBusyDays();
// => 2