مستوى المعرفة المطلوب لفهم المقال: مبتدئ. أنت بصدد دراسة مهمة Java Syntax، وأقرب إلى مستوياتها الأولية.
لقد بدأت للتو في تعلم جافا. يتم قصفك بالمصطلحات كما لو كانت من الوفرة. أنت محمل بكمية كبيرة من المعلومات التقنية، وأحيانًا تخلط بين ثلاثة أشجار صنوبر. صدقني، نظرًا لأنك انخرطت بالفعل في البرمجة، سيكون الأمر كذلك دائمًا (في هذه اللحظة، تظهر ضحكة مشؤومة خارج الشاشة، وصوت هادئ، مقطوع في منتصف الجملة، يهمس "اركض... أنقذ نفسك قبل ذلك" لقد فات الأوان..."). سوف تطاردك الأخطاء لبقية حياتك البرمجية، حتى لو كنت أفضل المطورين. ومع ذلك، هذا ليس مخيفًا على الإطلاق كما يبدو.
إذا كنت قد بدأت للتو في تعلم JavaRush، فمن المرجح أنك واجهت بالفعل المشكلات المطروحة في المقالة. على أية حال، نرحب بالتعليقات التي تصف المشكلات التي واجهتها خلال الأشهر الأولى من تعلم Java. |
مشكلة المستوى 0: الارتباك مع عامل المقارنة (==) وعامل التخصيص (=).
هذه مشكلة شائعة جدًا بالنسبة لأولئك الذين ينتقلون من لغات البرمجة الأخرى. وبشكل عام، منذ المدرسة الابتدائية اعتدنا على حقيقة أن
(=)
هذه علامة المساواة. هناك خدعة بسيطة يمكن استخدامها للتذكر وهي: إذا كنت تعلم أنك تهتم فقط بإحدى القيم (تقوم بتعيين واحدة للأخرى)، فاستخدم علامة "
=
" واحدة، وإلا إذا كنت تهتم بجميع المتغيرات والقيم (تقارنها) تحتاج إلى
==
علامة " " مزدوجة.
المشكلة: استخدام عامل المقارنة (==) لاختبار تكافؤ السلسلة
ما يجب فعله: تذكر أنه
لا يمكن التحقق من تكافؤ كائنات Java باستخدام(==)
، نظرًا لأن هذا العامل مصمم لاختبار مساواة الأنواع الأولية.
بالنسبة للكائنات التي تحتاج إلى استخدام
.equals()
. وفي
String
لغة جافا، فهو ليس أكثر من كائن (و
immutable
).
الكائن الذي تم وضع علامة عليه Immutable هو كائن لا يمكن تغيير حالته بعد إنشائه. في Java ، هذا يعني أن جميع حقول المثيلات لفئة ما تم تمييزها على final أنها أولية (أو أيضًا immutable ). |
المشكلة: تسلسل السلسلة في حلقة
لا تحاول هذا بنفسك! في كل مرة يتم فيها ربط السلاسل النصية، يتم إنشاء كائن جديد
String
(كما اكتشفنا أعلاه، السلاسل
immutable
غير قابلة للتغيير). في مرحلة ما، ستنفد الذاكرة أو سيبدأ البرنامج في استغراق الكثير من الوقت حتى يكتمل.
حل. استخدم
StringBuilder
بدلاً من ذلك
String
عند توصيل المحتوى في حلقة. يتم استخدام الفصل
StringBuilder
عندما تحتاج إلى إجراء الكثير من التغييرات على سلسلة أحرف. وهذه الخطوط، على عكس
String
، ليست كذلك
immutable
.
المشكلة: NullPointerException
يحدث هذا النوع من الاستثناء عندما نحاول استخدام مؤشر فارغ
null
بينما نحتاج في الواقع إلى كائن حقيقي.
جميع الأنواع البدائية لها قيم افتراضية. إذن، y int هو 0 ، و y boolean هو false . القيمة الافتراضية لأي أنواع مرجعية، أي الكائنات، هي null . إنها ليست كائنًا أو نوعًا، إنها قيمة خاصة. وهو ما يعني في الأساس "لا يوجد شيء هنا". |
ما يجب فعله: إذا تمت كتابة التعليمات البرمجية الخاصة بك بطريقة يمكن للكائن الخاص بك في مرحلة ما أن يقبل القيمة
null
، فستحتاج إلى إضافة "التحقق من
null
"، خاصة إذا كنت لا تقوم بإنشاء الكائن بنفسك. تذكر أيضًا أنه من الأفضل إرجاع مجموعات فارغة بدلاً من إرجاع مجموعة من
null
. سيكون من الجيد أيضًا إضافة التحقق من صحة الحروف والمستوطنين.
المشكلة: لسبب ما لا تعمل حلقة if / while / for
if (something.equals («что-то еще»)); {
System.out.println («Почему я не работаю???»);
}
ما هو الخطأ هنا؟ الأمر بسيط: لقد أفسدت الفاصلة المنقوطة الإضافية دماء مئات الآلاف من مبرمجي Java المبتدئين. حسنًا، لن تحتاج إليه بعد ذلك
if ()
. من وجهة نظر اللغة، يعتبر بناء الجملة هذا مقبولًا تمامًا، لذلك لن يشكو المترجم منه. لكنه ينهي العبارة الشرطية، ولن يفي الكود الموجود داخل الكتلة
{}
بالشرط أعلاه أبدًا.
الحل: تذكر منطق التصميم. علامة "
;
" تعني نهاية كتلة معينة، ولكن هنا كل شيء بدأ للتو.
المشكلة: محاولة الوصول إلى متغيرات الأعضاء غير الثابتة من خلال الأساليب الثابتة (مثل الطريقة الرئيسية)
حل . وترتبط هذه المشكلة بفهم المفهوم نفسه
static
. إذا تم تمييز الطريقة بهذه الكلمة، فهذا يعني أننا لسنا بحاجة إلى إنشاء مثيل للفئة لاستدعاء الطريقة الرئيسية. لذا فإن الحل هو أن يكون لديك فهم جيد لـ "الإحصائيات" وفهم جوهرها.
المشكلة: محاولة إعادة اختراع العجلة من خلال تطوير المكتبات والأدوات الموجودة بالفعل
حل. إنها في الواقع ليست مشكلة كبيرة. بالنسبة للمبتدئين، يعد هذا تمرينًا مفيدًا أكثر. ومع ذلك، إذا كنت ترغب في التركيز على النتيجة، على سبيل المثال، إنشاء قاعدة بيانات مريحة للمشتركين، فإن البحث عن مشترك في دليل الهاتف هو مجرد إحدى نتائج تطبيقك. في هذه الحالة، ليست هناك حاجة لكتابة خوارزمية بحث ثنائية. استخدم واحدًا موجودًا (نؤكد لك أن شخصًا ما قد كتبه من قبلك وهو موجود في المكتبات القياسية). لذا قم بدراسة مكتبات Java القياسية في وثائق Oracle. تعلم استخدام Google، واعتاد على قراءة Stack Overflow واطرح الأسئلة حول
مساعدة JavaRush ! ...وبطبيعة الحال، هذه ليست كل مشاكل المبتدئين. وصف لك في التعليقات!
هل أنت مهتم بقراءة المقالات المتعلقة بجافا؟ انضم إلى مجموعة مطوري جافا .
هناك الكثير من الأشياء المثيرة للاهتمام هنا.
GO TO FULL VERSION