بسم الله الرحمن الرحيم
مذكور أن String ليس كأنواع البيانات اﻷساسية مثل char و integer وإنما هو class في اللغة.
لماذا تم وضعه بهذه الطريقة أي لماذا لم يصبح من اﻷنواع اﻷساسية مثله مثل أي نوع من أنواع البيانات اﻷخرى ؟
سؤال جميل،
لأن String عبارة عن مصفوفة (Array) من نوع Char هي بالاصح Dynamic array من نوع Char
فلو مثلاً قلنا
String name = "Rashid";
فهو فعلياً يكون هكذا
char name[] = {'R','a','s','h','i','d'};
حتى في C++ كذلك. فـأي String عبارة عن كائن من صنف String وهو مصفوفة ديناميكيّة. أبحث أكثر عن مفهوم dynamic arrays.
ولكن ما مميزات هذه الطريقة ؟
خطر في بالي أنه من الصعب تخزين أكثر من حرف في خلية الذاكرة فتم الاستعانة بالمتغير Char لتخزين كل حرف في خلية، ولكن في نفس الوقت هناك النوع integer الذي يمكنه حمل أكثر من خانة. فلماذا لم يتم التعامل مع String مثل التعامل مع Integer ؟
لعلمك char هو بالاصل int الفرق بين Char و int هو طريقة العرض. الرقم لايتخزن بخلية الذاكره على انه عدة ارقام. بل ١٠٠٠٠٢٠٣١٢٣ هو رقم واحد و ، ٢ هو رقم واحد ايضاً. فطريقة تخزين الارقام بالذاكرة مختلفة واحجامها ايضاً مختلفة integer مساحته القصوى ٣٢ بت في لغة C واعتقد جافا كذلك. Integer واحد قد يكون ٨ بت، ١٦ بت او ٣٢ بت. فمثلاً
رقم ٢٣ اذا حولته الى رقم ثنائي يكون كا التالي وهو ٨ بت:
00010111
وهناك ثابت من نوع integer في لغات البرمجة غالبا ما يسمى MAX_INT اي آخر رقم قد يستطيع الوصول الية وهو التالي 2,147,483,647
لذلك integer يكون تخزينه دوماً في خلية على اساس انه رقم واحد لايتعدى ٣٢ بت.
ويكون ايضاً char عباره عن integer بطريقة عرض اخرى يمكنك مراجعة هذا الجدول.
ويمكنك ايضا كتابة مثلاً
char a = 82;
System.out.println(a);
سيقوم المترجم بطباعة حرف R مع مراعاة ان الرقم ٨٢ يكون بدون علامات تنصيص char
في الجافا يتم التفريق بين شيئين :
Prmitive Types الانواع الاساسية : وهي بيانات توصف بأنها صغيرة جدا وتأخذ حيزا معدودا من الذاكرة وهي بيانات ليست معقدة بمعنى انك تستطيع اعطائها قيمتها بشكل مباشر مثل integer , float , char الخ. فمثلا :
Objects الكائنات : وهي بيانات معقدة ولا يمكن اعطائها قيمة مباشرة بل هي تحوي بداخلها دوال ومتغيرات وبطبيعة الحال تأخذ حيزا كبيرا من الذاكرة وتكون على هيئة Class. وبالمناسبة يوجد اصدارة كائنية لمعظم الانواع الاساسية وتكتب بتكبير الحرف الأول مثلا Integer , Float.
وباعتبار String عبارة عن Class فهو نوع معقد.
التعليقات