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