الفرق بين الطول والطول () في Java

في IDEs الحديثة توجد ميزة الإكمال التلقائي التي تقدم كلمات Java الرئيسية أو المتغيرات المعلنة في فصلنا ، وبدون هذه الميزة ، كيف  تعرف  حجم أ جدول؟ وكيف تعرف حجم ثونغ؟ لا يمكن للمطورين من جميع المستويات (مبتدئ أو خبير) التمييز بين < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >الطول< / الامتداد>  و  < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >الطول ()< / الامتداد >  بشكل صحيح ، وبما أن IDE يصحح هذه المشكلة ، فإنه لا يزال غير مفهوم. في هذه المقالة سوف نلقي نظرة على بعض المفاهيم حول المصفوفات والسلاسل في Java.

أبسط إجابة هي  < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >الطول< / الامتداد>  لاسترداد حجم الصفيف، و  < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >الطول ()< / الامتداد >  هي طريقة ترجع حجم string.

int [] array = new int [5] ؛ 
System.out.println(array.length);//length for arrays

String str = "string";
System.out.println(str.length ()); length () للسلسلة < br / >< / pre> السؤال هو لماذا يحتوي الصفيف على سمة   < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >الطول< / الامتداد>  ولكن ليس سلسلة ونائب مقابل ذلك؟

لماذا تحتوي المصفوفات في Java على خاصية الإقراض؟

المصفوفة عبارة عن حاوية من الكائنات من نوع معين تخزن عددا محدودا من العناصر. بمجرد إنشاء اللوحة ، لن يتغير حجمها أبدا ويظل ثابتا. هذا هو السبب في أن < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >الطول< / الامتداد>  يتم الإعلان عنه كمتغير < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >final  وهذا < / SPAN> هو السبب  < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >الطول< / الامتداد>  يعتبر سمة تحدد صفيفا عند إنشائه.

يمكن إنشاء مصفوفة بطريقتين:
  1. تهيئة صفيف جديد بقيم.
  2. إنشاء صفيف جديد عن طريق تحديد حجمه.
تهيئة صفيف بقيم يؤدي إلى إنشاء صفيف جديد بحجم يتوافق مع عدد العناصر المفصولة بفواصل.

int[] tab = {1,2,3}; < / pre>
الطريقة الثانية هي إنشاء مصفوفة جديدة عن طريق تحديد النوع وعدد العناصر:

< pre class = "prettyprint lang-java" > String [] tab = سلسلة جديدة [3] ؛
< / pre>

لماذا لا توجد فئة صفيف محددة على أنها سلسلة؟

الصفيف هو كائن ولكل صفيف فئة  < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >الكائن< / المدى>  العبارة التالية قانونية:

< pre class = "prettyprint lang-java" > Object obj = سلسلة جديدة [20] ؛
تشمل المصفوفة جميع الأساليب والسمات الموروثة من الفئة  < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >الكائن  < / سبان > (باستثناء الاستنساخ). لماذا لا يوجد تعريف لفئة المصفوفة؟ لا يمكننا العثور على تعريف فئة Array ، أحد التفسيرات هو أنها مخفية عنا. إذا فكرت في الأمر قليلا ، إذا كان هناك فئة صفيف ، فكيف تبدو؟ ستظل بحاجة إلى لوحة لتخزين العناصر ، أليس كذلك؟ هذا هو السبب في أنها فكرة سيئة لتعريف مثل هذه الفئة. في الواقع ، يمكنك الحصول على فئة صفيف عن طريق استدعاء الطريقة  < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >getClass () < / span >: < / div>

< pre class = "prettyprint lang-java" >int [] tab = new int [2] ؛
System.out.println(tab.getClass());
< / pre>الإخراج:

< pre class = "prettyprint lang-java" >class [I< / pre>

لماذا تحتوي السلسلة على الطول ()؟< / h2>< / div>بنية بيانات a  < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >سلسلة< / سبان>  هو جدول  < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >حرف < / سبان>. ليست هناك حاجة لتحديد سمة غير مطلوبة لكل تطبيق. على عكس لغة C ، فإن صفيف الأحرف ليس سلسلة في Java. < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >سلسلة< / سبان>  ديناميكية بطبيعتها ، لكن < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >الطول< / الامتداد>. لقد فكر مصممو جافا في الأمر وقرروا تسهيل الأمر وتجنب الأخطاء للمطورين من خلال إنشاء الطريقة. < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" > الطول () < / الامتداد >.

المراجع:
Javadoc: Arrays
StackOverFlow: لماذا لا توجد فئة java.lang.Array ؟