רמת הידע הנדרשת להבנת המאמר: מתחיל. אתה בתהליך של לימוד קווסט של Java Syntax, וקרוב יותר לרמות הראשוניות שלו.
זה עתה התחלת ללמוד ג'אווה. אתה מופגז במונחים כאילו מתוך שפע. אתה עמוס בטונות של מידע טכני, ולפעמים אתה מתבלבל בשלושה אורנים. תאמיני לי, מכיוון שכבר התעסקת בתכנות, זה תמיד יהיה כך (ברגע זה, צחוק מבשר רעות נשמע מחוץ למסך, וקול שקט, חתוך באמצע המשפט, לוחש "רוץ... תציל את עצמך לפני זה מאוחר מדי..."). באגים ירדפו אותך לשארית חיי התכנות שלך, גם אם אתה המפתח הטוב ביותר. עם זאת, זה בכלל לא מפחיד כמו שזה נשמע.
אם זה עתה התחלת ללמוד JavaRush, סביר להניח שכבר נתקלת בבעיות שהועלו במאמר. בכל מקרה, נשמח לקבל הערות המתארות את הבעיות שהיו לך בחודשים הראשונים של לימוד Java. |
בעיה ברמה 0: בלבול עם אופרטור ההשוואה (==) ואופרטור ההקצאה (=).
זו בעיה נפוצה מאוד למי שעובר משפות תכנות אחרות. ובכלל, מאז בית הספר היסודי התרגלנו לזה
(=)
שזה סימן שוויון. טריק פשוט שניתן להשתמש בו כדי לזכור הוא זה: אם אתה יודע שאכפת לך רק מאחד מהערכים (אתה מקצה אחד לשני) אתה משתמש בסימן "
=
" בודד, אחרת אם אכפת לך מכל המשתנים וערכים (אתה משווה אותם) אתה צריך
==
סימן כפול.
בעיה: שימוש באופרטור ההשוואה (==) לבדיקת שוויון מחרוזות
מה לעשות: זכור,
לא ניתן לבדוק שוויון אובייקטים של Java באמצעות(==)
, שכן אופרטור זה נועד לבדוק שוויון של טיפוסים פרימיטיביים.
עבור חפצים אתה צריך להשתמש ב-
.equals()
. ובשפת
String
ג'אווה זה לא יותר מאובייקט (ו
immutable
).
אובייקט המסומן בתור Immutable הוא אובייקט שלא ניתן לשנות את מצבו לאחר היצירה. ב- Java , זה אומר שכל שדות המופע של מחלקה מסומנים כ- final והם פרימיטיביים (או גם immutable ). |
בעיה: שרשרת מחרוזת בלולאה
אל תנסה את זה בעצמך! בכל פעם שמשרשרים מחרוזות, נוצר אובייקט חדש
String
(כפי שגילינו למעלה, מחרוזות
immutable
אינן ניתנות לשינוי). בשלב מסוים יגמר לך הזיכרון או שהתוכנית תתחיל לקחת יותר מדי זמן להשלים.
פִּתָרוֹן. השתמש
StringBuilder
במקום זאת
String
בעת שרשרת תוכן בלולאה. המחלקה
StringBuilder
משמשת כאשר אתה צריך לבצע הרבה שינויים במחרוזת תווים. ושורות כאלה, שלא כמו
String
, אינן
immutable
.
בעיה: NullPointerException
חריג מסוג זה מתרחש כאשר אנו מנסים להשתמש במצביע null
null
כאשר למעשה אנו זקוקים לאובייקט אמיתי.
לכל הסוגים הפרימיטיביים יש ערכי ברירת מחדל. אז y int הוא 0 ו- y boolean הוא false . ערך ברירת המחדל של כל סוגי הפניות, כלומר אובייקטים, הוא null . זה לא חפץ או טיפוס, זה ערך מיוחד. מה שפירושו בעצם "אין כאן כלום". |
מה לעשות: אם הקוד שלך כתוב בצורה כזו שבשלב מסוים האובייקט שלך יכול לקבל את הערך
null
, עליך להוסיף "בדוק עבור
null
", במיוחד אם אתה לא יוצר את האובייקט בעצמך. זכור גם שעדיף להחזיר אוספים ריקים מאשר סט של
null
. זה יהיה גם נחמד להוסיף אימות עבור getters ו-seters.
בעיה: משום מה הלולאה if / while / for לא עובדת
if (something.equals («что-то еще»)); {
System.out.println («Почему я не работаю???»);
}
מה לא בסדר כאן? זה פשוט: נקודה-פסיק קלקלה את דמם של מאות אלפי מתכנתי ג'אווה מתחילים. ובכן, אתה לא צריך את זה אחרי
if ()
. מנקודת מבט של שפה, תחביר כזה הוא די מקובל, כך שהמהדר לא יתלונן על כך. אבל זה מסיים את ההצהרה המותנית, והקוד בתוך הבלוק
{}
לעולם לא יעמוד בתנאי שלמעלה.
פתרון: זכור את ההיגיון העיצובי. הסימן "
;
" פירושו סוף בלוק מסוים, אבל כאן הכל רק מתחיל.
בעיה: ניסיון לגשת למשתני חבר לא סטטיים משיטות סטטיות (כגון ראשי)
פתרון . בעיה זו קשורה להבנת המושג עצמו
static
. אם מתודה מסומנת במילה זו, זה אומר שאנחנו לא צריכים להפעיל את המחלקה כדי לקרוא למתודה הראשית. אז הפתרון הוא להבין טוב את ה"סטטיקה" ולהבין את המהות שלהם.
בעיה: ניסיון להמציא את הגלגל מחדש על ידי פיתוח ספריות וכלים שכבר קיימים
פִּתָרוֹן. למעשה זו לא כל כך בעיה. למתחילים, זה יותר תרגיל שימושי. עם זאת, אם אתה רוצה להתמקד בתוצאה, למשל, יצירת מסד נתונים נוח של מנויים, אז חיפוש מנוי בספר הטלפונים הוא רק אחת מהתוצאות של היישום שלך. במקרה זה, אין צורך לכתוב אלגוריתם חיפוש בינארי. השתמש באחד קיים (אנו מבטיחים לך, מישהו כבר כתב אותו לפניך והוא נמצא בספריות הסטנדרטיות). אז למד את הספריות הסטנדרטיות של Java בתיעוד של Oracle. למד לגוגל, התרגל לקרוא Stack Overflow ושאל שאלות על
עזרה JavaRush ! ...כמובן, אלו לא כל הבעיות של מתחילים. תאר את שלך בתגובות!
האם אתה מעוניין לקרוא מאמרים הקשורים ל-Java? הצטרף לקבוצת מפתחי Java .
יש כאן הרבה דברים מעניינים.
GO TO FULL VERSION