در 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