السلاسل النصية أهلا بكم من جديد في دورة نوليدج سيتي في البرمجة في جافا أنا كليف بروزو أنا معلمك سنتعلم اليوم كل شيء عن السلاسل وكيفية إدخال البيانات في برنامجنا دعنا نلقي نظرة على بعض التعليمات البرمجية عندما تتعامل Java مع السلاسل تعتبر السلسلة فئة وكل سلسلة هي كائن في تلك الفئة الآن قد تقول ماذا في ذلك؟ حسنًا، المشكلة تكمن في تخزين السلاسل كمتغير مرجعي وهذا يعني أنه بدلاً من احتواء الكلمة الفعلية الموجودة في السلسلة تحتوي على مؤشر لعنوان الذاكرة وستحتوي السلسلة الثانية على مؤشر مختلف إلى عنوان ذاكرة مختلف الآن، عادةً في البرمجة سنستخدم معامل يساوي يساوي == في المقارنة بين الأشياء لكن في هذه الحالة == معامل يساوي يساوي تقارن عناوين الذاكرة التي من الواضح أنها مختلفة ولن تقارن قيم البيانات لنلق نظرة على شكل هذا إذا كتبنا برنامجًا قصيرًا في السطر الخامس قمت بإعداد متغير يسمى myName وأعطيه قيمة اسمي myname ثم قمت بإعداد سلسلة أخرى تسمى myName2 قرأت بعض المعلومات أقوم بإعداد ال Scanner الخاص بي ثم أقوم بطباعة سطر التي تخبر المستخدم بما يجب فعله في السطر التاسع أقول "ما اسمك؟" والشخص على وحدة التحكم يكتب أسمائهم المخزنة في myName2 ثم أطرح السؤال إذا كان myName يساوي myName2 فقم بطباعة myName يساوي myName2 وإلا فإن طباعة myName لا يساوي myName2 ومرة أخرى، سألفت انتباهك إلى الحقيقة أننا نستخدم عامل التساوي المزدوج == هنا وهي طريقة لاختبار المساواة في معظم لغات البرمجة عندما يتم تشغيل البرنامج أدناه يظهر موجه على الشاشة "ما اسمك؟" what's your name? هذا من السطر التاسع ثم في السطر 10، اكتب كليف هذا اسمي والخط 11 يقول Cliff الذي خزنته في السطر الخامس يساوي الذي كتبته في السطر 10 على الرغم من أنها متطابقة تمامًا يخبرني البرنامج أن كليف لا يساوي كليف وذلك لأنها تقارن أين توجد هذه المتغيرات في الذاكرة وليس ما هي البيانات الفعلية طريقة للتغلب على ذلك هو الدخول وتغيير طريقة مقارنة Java بين القيم المتساوية في الواقع استخدم دالة تسمى equal أو تساوي الآن هذا هو نفس البرنامج الذي تنظر إليه باستثناء السطر 11 لقد غيرت طريقة عمل الكود بدلاً من استخدام == أضع myName.equals ثم بين قوسين myName2 باستخدام يساوي بدلاً من التحقق من مواقع الذاكرة التي من الواضح أنها ليست متساوية يتحقق من القيم الموجودة بالفعل في تلك المواقع الذاكرة لذلك عندما يتم تشغيل البرنامج مرة أخرى أكتب اسمي وهذه المرة يقول كليف يساوي كليف ومع ذلك، سألفت انتباهكم على الجانب الأيمن من الشاشة قمت بتشغيل البرنامج مرة أخرى وهذه المرة كتبت اسمي بأحرف كبيرة حسنًا، هذه المرة ذكر البرنامج بدقة كليف لا يساوي Cliff لأن واحدًا من الكلمتين ليس في كل الأحرف الاستهلالية بينما الآخر كان هكذا والآحاد والأصفار الفعلية لهذه الأحرف تختلف عن تلك الخاصة بالأحرف الكبيرة لنلق نظرة على ما يحدث عندما نقارن الأحرف الفردية لدينا القدرة على استدعاء عدة دوال مختلفة لتقييم ما بداخل الأحرف الفردية يمكنني الاختبار هل هي حرف هل هو رقم؟ هل هي مساحة بيضاء؟ هل هي أحرف كبيرة؟ هل هي أحرف صغيرة؟ يمكنني تحويلها إلى أحرف كبيرة يمكنني تحويلها إلى أحرف صغيرة أو يمكنني حتى تحويل الحرف الواحد إلى سلسلة حيث سيتم تخزينها كسلسلة من حرف واحد دعونا نلقي نظرة على كيفية عمل ذلك لقد كتبت برنامجًا يبدأ في السطر الخامس وأنا آخذ متغير حرف وأطلق عليه الحرف C وأعطيه قيمة "C" وسوف تتذكر تلك الأحرف الفردية تحصل على اقتباسات فردية يطبع السطر السادس السطر الأول تقول أن الحرف فارغ وهذا هو السطر الأول من الناتج هنا الحرف هي C ثم في السطر الثامن أختبر لمعرفة ما إذا كان الحرف كبير .isUpperCase هي دالة وأنا أستخدم حرف C تعرف الفرق بين الأحرف الكبيرة والصغيرة في هذه الحالة الحرف "C" الذي قمت بتعيينه في السطر الخامس هو الأحرف الكبيرة إذن السطر التاسع ينفذ وهذا بالضبط ما أقوله في مخرجاتي الحرف C كبير الجزء التالي من البرنامج يقول الحرف C يساوي الآن حسنًا، ما أفعله هو أنني أغير قيمة من الحرف C المتغير إلى الحرف الصغير أنا أستدعي دالة الأحرف الصغيرة إلى الأحرف الصغيرة وهذا يأخذ كل ما في الحرف C يغيره إلى أحرف صغيرة ويضعه مرة أخرى في الحرف C فقط للتحقق في السطر 15 أطبع سطرًا يقول الحرف C تم تغييره إلى الأحرف الصغيرة وهذا هو السطر الثالث هنا الحرف C تم تغييره إلى الأحرف الصغيرة ثم أجري الاختبار مرة أخرى في السطور من 17 إلى 20 لمعرفة ما إذا كان الحرف كبير هذا الكود هو نفسه تمامًا مثل الأسطر من 8 إلى 11 لكن هذه المرة يخبرني أن الحرف C صغير ثم أسأل في السطر 22 هل الحرف حرف؟ وأقوم بتمرير دالة .isLetter الحرف c في هذه الحالة الحرف C هو حرف ويتم طباعته أنه حرف من الأبجدية في السطر 27 قمت بتعيين الحرف "5" الآن هذا ليس رقم "5" لا يزال يعامل كحرف كما هو الحال في اقتباسات مفردة أنا أطبع سطرًا للتأكيد فقط تم تغيير الحرف إلى 5 وبعد ذلك أسأل هل الحرف هو رقم؟ الآن، لا يعني .isDigit أنه رقمي إنهم مختلفون إنها تعرف فقط الفرق بين الحروف الأبجدية وأرقام الأبجدية في هذه الحالة الحرف 5 هو رقم وهذا هو السطر الذي يطبع هنا أقوم بتغيير الحرف C إلى مسافة وأنا أطبع سطرًا محددًا أنه تم تغيير الحرف إلى فارغ هذا هو السطر الأخير التالي هنا في الإخراج أختبر في السطر 39 لمعرفة ما إذا كان الحرف عبارة عن مسافة بيضاء مررت .isWhitespace دالة الحرف C ونعم بالفعل يطبع أن الحرف هو مسافة بيضاء الآن، أنت تعرف كيف يتم تخزين السلاسل يتم تخزينها كمواقع ذاكرة وأحتاج إلى استخدام كلمة نقطة تساوي بدلاً من ذلك من يساوي يساوي رأينا كيف يمكننا إدخال الأحرف في برنامجنا ثم نختبر لمعرفة نوع الأحرف يمكننا تحويلها إلى أحرف كبيرة يمكننا تحويلها إلى أحرف صغيرة ويمكننا تحويلها إلى سلاسل انضم إلي في المرة القادمة عندما نتعامل مع أحرف السلاسل فهارس السلاسل وبعض عمليات السلاسل سأراك قريبا