المصفوفات
المصفوفات (Arrays) تخزين مجموعات من البيانات من نفس النوع. في هذا الدرس، سنتعلم كيفية استخدام المصفوفات في Java.
إنشاء المصفوفة
الطريقة 1: إنشاء مع قيم
JAVA
int[] numbers = {1, 2, 3, 4, 5};
String[] names = {"أحمد", "محمد", "علي"};
الطريقة 2: إنشاء بحجم محدد
JAVA
int[] numbers = new int[5]; // مصفوفة بحجم 5 (قيم افتراضية: 0)
String[] names = new String[3]; // مصفوفة بحجم 3 (قيم افتراضية: null)
الطريقة 3: إنشاء مع القيم لاحقًا
JAVA
int[] numbers = new int[3];
numbers[0] = 10;
numbers[1] = 20;
numbers[2] = 30;
الوصول إلى العناصر
JAVA
String[] fruits = {"تفاح", "موز", "برتقال"};
// الوصول إلى العنصر الأول
System.out.println(fruits[0]); // "تفاح"
// الوصول إلى العنصر الأخير
System.out.println(fruits[2]); // "برتقال"
// طول المصفوفة
System.out.println(fruits.length); // 3
⚠️ خطأ شائع: IndexOutOfBoundsException
JAVA
int[] numbers = {1, 2, 3};
// System.out.println(numbers[3]); // ❌ خطأ: الفهرس 3 غير موجود
System.out.println(numbers[2]); // ✅ صحيح: آخر عنصر
تعديل العناصر
JAVA
int[] numbers = {1, 2, 3, 4, 5};
numbers[0] = 10; // تغيير العنصر الأول
numbers[4] = 50; // تغيير العنصر الأخير
System.out.println(Arrays.toString(numbers)); // [10, 2, 3, 4, 50]
المرور على المصفوفة
باستخدام for
JAVA
int[] numbers = {10, 20, 30, 40, 50};
for (int i = 0; i < numbers.length; i++) {
System.out.println("numbers[" + i + "] = " + numbers[i]);
}
باستخدام for-each (مُحسَّن)
JAVA
int[] numbers = {10, 20, 30, 40, 50};
for (int number : numbers) {
System.out.println(number);
}
باستخدام while
JAVA
int[] numbers = {10, 20, 30, 40, 50};
int i = 0;
while (i < numbers.length) {
System.out.println(numbers[i]);
i++;
}
عمليات شائعة على المصفوفات
البحث عن عنصر
JAVA
int[] numbers = {10, 20, 30, 40, 50};
int target = 30;
int index = -1;
for (int i = 0; i < numbers.length; i++) {
if (numbers[i] == target) {
index = i;
break;
}
}
if (index != -1) {
System.out.println("تم العثور على العنصر في الفهرس: " + index);
} else {
System.out.println("العنصر غير موجود");
}
إيجاد القيمة القصوى
JAVA
int[] numbers = {10, 50, 30, 20, 40};
int max = numbers[0];
for (int number : numbers) {
if (number > max) {
max = number;
}
}
System.out.println("القيمة القصوى: " + max); // 50
حساب المتوسط
JAVA
int[] numbers = {10, 20, 30, 40, 50};
int sum = 0;
for (int number : numbers) {
sum += number;
}
double average = (double) sum / numbers.length;
System.out.println("المتوسط: " + average); // 30.0
ترتيب المصفوفة
باستخدام Arrays.sort()
JAVA
import java.util.Arrays;
int[] numbers = {50, 20, 40, 10, 30};
Arrays.sort(numbers);
System.out.println(Arrays.toString(numbers)); // [10, 20, 30, 40, 50]
ترتيب يدوي (Bubble Sort)
JAVA
int[] numbers = {50, 20, 40, 10, 30};
for (int i = 0; i < numbers.length - 1; i++) {
for (int j = 0; j < numbers.length - i - 1; j++) {
if (numbers[j] > numbers[j + 1]) {
int temp = numbers[j];
numbers[j] = numbers[j + 1];
numbers[j + 1] = temp;
}
}
}
System.out.println(Arrays.toString(numbers)); // [10, 20, 30, 40, 50]
المصفوفات المتعددة الأبعاد
مصفوفة ثنائية الأبعاد (جدول)
JAVA
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
// الوصول إلى عنصر
System.out.println(matrix[1][2]); // 6 (صف 1، عمود 2)
// المرور على المصفوفة
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
System.out.print(matrix[i][j] + " ");
}
System.out.println();
}
إنشاء مصفوفة ديناميكية
JAVA
int[][] matrix = new int[3][4]; // 3 صفوف، 4 أعمدة
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
matrix[i][j] = i * matrix[i].length + j + 1;
}
}
❓ أسئلة شائعة
س لماذا تبدأ المصفوفات من 0 وليس 1؟
ج هذا تصميم تاريخي في لغات البرمجة. الفهرس يمثل الإزاحة من بداية المصفوفة.
س هل يمكن تغيير حجم المصفوفة بعد الإنشاء؟
ج لا، حجم المصفوفة ثابت بعد الإنشاء. استخدم ArrayList للمصفوفات الديناميكية.
س ما الفرق بين length و length()؟
ج length هو خاصية للمصفوفات. length() هو دالة للنصوص (String).
📖 ملخص
- المصفوفات تخزين عناصر من نفس النوع بحجم ثابت
- الوصول:
array[index](يبدأ من 0) - الطول:
array.length - المرور: for، for-each، while
- ترتيب:
Arrays.sort() - المصفوفات المتعددة الأبعاد:
int[][] matrix
📝 تمارين
- مصفوفة أرقام: أنشئ مصفوفة من 10 أرقام واحسب المجموع والمتوسط
- البحث: اكتب دالة تبحث عن عنصر في مصفوفة وتعيد فهرسه
- مصفوفة ثنائية: أنشئ مصفوفة 3×3 واملأها بأرقام عشوائية
الدرس التالي
في الدرس التالي، سنتعلم ممارسة أساسيات Java — تطبيقات عملية.



