النظر في الأسئلة التالية قبل بدء هذا المقال
كيفية الحصول على طول صفيف دون استخدام أي IDE مع وظيفة الإكمال التلقائي؟ وكيف تحصل على طول السلسلة؟
لقد طلبت من المبرمجين من مختلف المستويات ، بما في ذلك المستويات المبتدئة والمتوسطة. لا يمكن لأي منهم الإجابة على هذا السؤال بدقة وثقة (إذا كنت تستطيع الإجابة على هذا السؤال بدقة وثقة ، فإنه يثبت أنك أفضل في هذه المعرفة من معظم المبرمجين المتوسطين). نظرًا لأن العديد من IDEs لديها الآن وظائف إكمال التعليمات البرمجية ، يمكن للمطورين فهم العديد من القضايا بشكل سطحي للغاية.
يجب أن تكون الإجابة الصحيحة على السؤال أعلاه كما يلي:
int [] arr = new int [3] ؛ system.out.println (arr.length) ؛ // استخدم الطول للحصول على درجة سلسلة صفيف str = "abc" ؛ system.out.println (str.length ())
لذا فإن السؤال هو ، لماذا تحتوي الصفيف على سمة طول ولكن السلسلة لا؟ أو ، لماذا تحتوي السلاسل على طريقة length() ، لكن المصفوفات لا؟
لماذا يتمتع الصفيف بسمات الطول؟
أولاً ، الصفيف هو كائن حاوية يحتوي على عدد ثابت من القيم من نفس النوع. بمجرد إنشاء الصفيف ، يتم إصلاح طولها. يمكن استخدام طول الصفيف كطول متغير المثيل النهائي. لذلك ، يمكن اعتبار الطول سمة من صفيف.
هناك طريقتان لإنشاء صفيف:
1. إنشاء صفيف من خلال تعبيرات الصفيف.
2. إنشاء صفيف عن طريق تهيئة القيم.
في كلتا الحالتين ، بمجرد إنشاء الصفيف ، يتم إصلاح حجمه.
طريقة إنشاء صفيف باستخدام تعبير على النحو التالي ، والذي يحدد نوع العنصر ، وبعد الصفيف ، وطول صفيف بعد واحد على الأقل.
تلبي طريقة الإعلان هذه المتطلبات لأنها تحدد طول البعد (المصفمة لها نوع int ، البعد 2 ، والبعد الأول هو 3)
int [] [] arr = new int [3] [] ؛
عند إنشاء صفيف باستخدام تهيئة الصفيف ، تحتاج إلى توفير جميع القيم الأولية. النموذج هو استخدام {و) لإرفاق جميع القيم الأولية معًا وفصلها.
int [] arr = {1،2،3} ؛ملحوظة:
قد يكون هناك سؤال هنا. منذ تحديد حجم الصفيف عند تهيئة ، int[][] arr = new int[3][];定الصفيف دون إعطاء حجم البعد الثاني للمصفوفة. فكيف يتم تعريف طول ARR هذا؟
في الواقع ، طول ARR هو 3. في الواقع ، جميع المصفوفات في جافا ، بغض النظر عن عدد الأبعاد ، هي في الواقع صفائف أحادية البعد. على سبيل المثال ، ARR ، يتم تخصيص 3 مسافات ، كل مساحة تخزن عنوان صفيف أحادي البعد ، والذي يصبح صفيف "ثنائي الأبعاد". ولكن بالنسبة لـ ARR ، يبلغ طوله 3.
int [] [] a = new int [3] [] ؛ system.out.println (A.Length) ؛ // 3int [] [] b = new int [3] [5] ؛ system.out.println (B.Length) ؛ // 3
لماذا لا يوجد فئة صفيف مثل سلسلة محددة في جافا
نظرًا لأن المصفوفات هي أيضًا كائنات ، فإن الرمز التالي قانوني أيضًا:
كائن OBJ = New int [10] ؛
تحتوي المصفوفة على جميع الطرق الموروثة من كائن (علاقة الميراث من المصفوفات في Java) ، باستثناء clone (). لماذا لا يوجد فئة صفيف؟ لا يوجد ملف Array.java في Java. التفسير البسيط هو أنه مخفي (ملاحظة: تتشابه المصفوفات في Java إلى حد ما لأنواع البيانات الأساسية ، فهي نوع مدمج ، ولا يوجد فئة فعلية تتوافق معها). يمكنك التفكير في هذا السؤال - إذا كان هناك فصل صفيف ، كيف ستبدو؟ سيظل بحاجة إلى مجموعة لتخزين جميع عناصر الصفيف ، أليس كذلك؟ لذلك ، ليس من الجيد تحديد فصل الصفيف. (ملاحظة المترجم: هنا قد تكون مربكة بعض الشيء ، والسبب مشابه إلى حد ما: مشكلة الدجاج التي ولدت بالبيض والدجاج ، وقد لا يكون الاستعارة مناسبًا للغاية ، يرجى فهمها بنفسك)
في الواقع ، يمكننا الحصول على تعريف الفئة للمصفوفة ، من خلال الكود التالي:
int [] arr = new int [3] ؛ system.out.println (arr.getClass ()) ؛
الإخراج:
الفصل [أنا
يمثل "الفئة [i" توقيع نوع وقت التشغيل لكائن الفئة الذي يكون نوع العضو عبارة عن مجموعة من int "
لماذا تحتوي السلسلة على طريقة الطول ()؟
بنية البيانات خلف السلسلة هي صفيف char ، لذلك ليست هناك حاجة لتحديد خاصية غير ضرورية (لأن الخاصية متوفرة بالفعل في قيمة char). على عكس C ، فإن مجموعة Char في Java لا تساوي سلسلة ، على الرغم من أن الآلية الداخلية للسلسلة يتم تنفيذها بواسطة صفيفات Char. (ملاحظة: في لغة C ، لا توجد فئة سلسلة ، ويستخدم تحديد السلاسل عادة شكل char string[6] = "hollis"; )
ملاحظة: هناك الطرق التالية لتحويل char [] إلى سلسلة:
char [] s = {'a' ، 'b' ، 'c'} ؛ string1 = s.toString () ؛ string2 = new string (s) ؛ string3 = string.valueof (s) ؛لخص
ما سبق هو المحتوى الكامل لهذه المقالة. آمل أن يكون محتوى هذه المقالة مفيدًا للجميع في التعلم أو استخدام Java. إذا كان لديك أي أسئلة ، فيمكنك ترك رسالة للتواصل.