1. مصفوفة أحادية البعد
1.1 تعريف المصفوفة أحادية البعد
اكتب arrayName[];type[] arrayName;
يمكن أن يكون النوع (النوع) أي نوع بيانات في Java، بما في ذلك أنواع مجموعة الأنواع البسيطة. اسم المصفوفة arrayName هو معرف قانوني، ويشير [] إلى أن المتغير هو متغير نوع المصفوفة.
قد يكون النموذج الآخر غريبًا جدًا لمطوري C++، لكن بالنسبة للغات التطوير مثل JAVA أو C#، قد يكون النموذج الآخر أكثر سهولة، لأن ما تم تعريفه هنا هو مجرد متغير، ولا يقوم النظام بإنشاء مثيل له ، ما عليك سوى تحديد نوع المتغير، وليس هناك حاجة لتحديد حجم المصفوفة في []. (هل النموذج الأول مخصص فقط للتوافق مع العادات الماضية؟ بعد كل شيء، تأثير لغة C كبير جدًا؟)
على سبيل المثال:
int intArray[]; يعلن عن مصفوفة عددية، وكل عنصر في المصفوفة عبارة عن بيانات عددية. على عكس C وC++، لا تخصص Java ذاكرة لعناصر المصفوفة في تعريف المصفوفة، لذلك لا يحتاج [] إلى الإشارة إلى عدد العناصر في المصفوفة، أي طول المصفوفة، ولا يمكنك السؤال. أي شيء عن مجموعة محددة على النحو الوارد أعلاه. يجب علينا تخصيص مساحة ذاكرة لها في هذا الوقت، نحتاج إلى استخدام عامل التشغيل الجديد. تنسيقه هو كما يلي: arrayName=new type[arraySize]؛ على سبيل المثال: intArray=new int[3];
تخصيص مساحة الذاكرة التي تشغلها 3 أعداد صحيحة من النوع int لمصفوفة أعداد صحيحة.
عادة، يمكن الجمع بين هذين الجزأين، بالتنسيق التالي:
اكتب arrayName=new type[arraySize] على سبيل المثال: int intArray=new int[3];
1.2 الإشارة إلى عناصر المصفوفة أحادية البعد
بعد تعريف المصفوفة وتخصيص مساحة الذاكرة لها باستخدام عامل التشغيل الجديد، يمكنك الرجوع إلى كل عنصر في المصفوفة. تتم الإشارة إلى عناصر المصفوفة على النحو التالي:
اسم المصفوفة[فهرس]
من بينها: الفهرس هو مصفوفة منخفضة، والتي يمكن أن تكون عددًا صحيحًا ثابتًا أو تعبيرًا. مثل a[3]، b[i] (i عدد صحيح)، c[6*I]، إلخ. تبدأ المشتركات من 0 وترتفع إلى طول المصفوفة ناقص 1. بالنسبة لرقم in-tArray في المثال أعلاه فهو يحتوي على 3 عناصر وهي:
intArray[0]، intArray[1]، intArray[2]. ملاحظة: لا يوجد intArray[3].
بالإضافة إلى ذلك، على عكس C وC++، تتطلب Java عمليات فحص خارج الحدود على عناصر المصفوفة لضمان السلامة. وفي الوقت نفسه، يكون لكل مصفوفة طول سمة يحدد طولها، على سبيل المثال: يحدد intArray.length طول المصفوفة intArray.
public class ArrayTest{ public static void main(String args[]){ int a[]=new int[5]; i=a.length-1;i>=0;i--) System.out.println("a["+i+"]="+a[i] }}
نتائج التنفيذ هي كما يلي:
C:/>java ArrayTesta[4]=4a[3]=3a[2]=2a[1]=1a[0]=0
يعين هذا البرنامج قيمة لكل عنصر في المصفوفة ويخرجها بترتيب عكسي.
1.3 تهيئة المصفوفة أحادية البعد
يمكن تعيين قيم لعناصر المصفوفة وفقًا للمثال أعلاه. ويمكن أيضًا تهيئته في نفس الوقت الذي يتم فيه تعريف المصفوفة.
على سبيل المثال:
int a[]={1, 2, 3, 4, 5};
افصل كل عنصر من عناصر المصفوفة بفاصلة (،)، وسيقوم النظام بتخصيص قدر معين من المساحة للمصفوفة.
بخلاف لغة C، لا تتطلب Java أن يكون المصفوفة ثابتة في هذا الوقت. في الواقع، المتغيرات هنا تشبه المؤشرات في لغة C، لذلك لا يزال من الممكن استخدامها كقيم إرجاع لوظائف أخرى C، المتغيرات المحلية تعد العودة إلى وظيفة الاستدعاء لمواصلة استخدامها خطأً سهلاً للغاية بالنسبة للأشخاص الذين يتعلمون للتو.
2. مجموعة متعددة الأبعاد
مثل C وC++، تعتبر المصفوفات متعددة الأبعاد في Java بمثابة صفائف من المصفوفات. على سبيل المثال، المصفوفة ثنائية الأبعاد هي مصفوفة خاصة أحادية البعد، وكل عنصر عبارة عن مصفوفة أحادية البعد. فيما يلي نستخدم بشكل أساسي الأرقام ثنائية الأبعاد كمثال للتوضيح، والوضع في الأبعاد العالية مشابه.
2.1 تعريف المصفوفة ثنائية الأبعاد
يتم تعريف المصفوفة ثنائية الأبعاد على النحو التالي:
اكتب اسم المصفوفة[][];
على سبيل المثال:
intArray[][];
مثل المصفوفة أحادية البعد، لا يتم تخصيص مساحة ذاكرة لعناصر المصفوفة في الوقت نفسه، ويجب استخدام عامل التشغيل الجديد لتخصيص الذاكرة قبل الوصول إلى كل عنصر.
بالنسبة للمصفوفات عالية الأبعاد، هناك عدة طرق لتخصيص مساحة الذاكرة:
1. تخصيص مساحة لكل بعد بشكل مباشر، مثل:
int a[][]=new int[2][3];
2. بدءاً من البعد الأعلى، تخصيص مساحة لكل بعد، مثل:
int a[][]=new int[2][];a[0]=new int[3];a[1]=new int[3];
أكمل نفس الوظيفة كما في 1. وهذا يختلف عن C وC++، حيث يجب تحديد طول كل بعد مرة واحدة.
2.2 الإشارة إلى عناصر المصفوفة ثنائية الأبعاد
لكل عنصر في المصفوفة ثنائية الأبعاد، الطريقة المرجعية هي: arrayName[index1] [index2] حيث يكون Index1 وindex2 عبارة عن رموز منخفضة، والتي يمكن أن تكون ثوابت أو تعبيرات صحيحة، مثل [2] [3]، وما إلى ذلك، نفس الشيء، كل اشتراكات أحادية البعد تبدأ جميعها من 0.
2.3 تهيئة مجموعة ثنائية الأبعاد
هناك طريقتان:
1. قم بتعيين قيمة مباشرة لكل عنصر.
2. قم بتهيئة المصفوفة في نفس الوقت الذي تم تعريفه فيه.
على سبيل المثال: int a[][]={{2, 3}, {1, 5}, {3, 4}};
حدد مصفوفة 3×2 وقم بتعيين قيمة لكل عنصر.