תיעוד Java
מדריך עיון תמציתי ל-Java, מבוסס דוגמאות. קוראים את המושג, רואים את הקוד, ואז מתרגלים אותו במסלול של Coddy.
להתחיל מסלול Java מודרךGetting Started
- מה זה Javaמה Java באמת, איך ה-JVM מאפשרת לתוכנית מקומפלת אחת לרוץ בכל מקום, ואילו סוגי תוכנה בונים עם Java.
- התקנת Javaאיך מתקינים את ערכת הפיתוח של Java (JDK), בוחרים גרסה וספק, ומוודאים ש-java ו-javac עובדים משורת הפקודה.
- הרצת Javaמחזור שני השלבים, קומפילציה ואז הרצה, שעומד מאחורי כל תוכנית Java: הופכים קוד מקור .java ל-bytecode עם javac, ואז מריצים את קובץ ה-.class עם java.
- תחביר Javaהמבנה של תוכנית Java: מתודת `main`, פקודות ונקודה-פסיק, בלוקים וסוגריים מסולסלים, והכללים שהקומפיילר אוכף עוד לפני שהקוד רץ.
- הערותאיך כותבים הערות ב-Java: הערות שורה עם //, בלוקים מרובי שורות עם /* */ והערות תיעוד Javadoc עם /** */, מתי להשתמש בכל אחת וממה להימנע.
Variables & Types
- משתניםאיך עובדים משתנים ב-Java: הצהרה עם טיפוס, השמת ערכים, כללי שמות, מילת המפתח var, קבועים עם final, וכללי ה-scope שקובעים איפה משתנה חי.
- טיפוסי נתוניםטיפוסי הנתונים של Java בהסבר ברור: שמונת הטיפוסים הפרימיטיביים, טיפוסי הפניה, ערכי ברירת מחדל, ליטרלים וסיומות, גלישה, ומתי להשתמש בכל טיפוס מספרי.
- מחרוזותאיך עובדות מחרוזות ב-Java: יצירה, חיבור עם +, למה הן בלתי ניתנות לשינוי, השוואה עם equals, ומתודות String יומיומיות כמו length, substring ו-replace.
- עיצוב מחרוזותאיך מעצבים מחרוזות ב-Java עם String.format ו-printf: מפרטי העיצוב למספרים, ריפוד, ספרות אחרי הנקודה, ו-text blocks עם המתודה formatted.
- אופרטוריםאיך עובדים אופרטורים ב-Java: חשבון, השוואה, לוגיקה, השמה, הגדלה והאופרטור הטרנרי, וגם חלוקת שלמים, קדימות והמלכודות שתופסות מתחילים.
- Type Castingאיך Java ממירה בין טיפוסים: הרחבה אוטומטית, המרות צמצום מפורשות, אילו נתונים הולכים לאיבוד בצמצום, והמרה בין מספרים למחרוזות.
- המחלקה Mathאיך משתמשים במחלקה Math של Java: Math.pow, Math.sqrt, Math.abs, Math.max ו-Math.min, עיגול עם round, floor ו-ceil, יצירת מספרים אקראיים בטווח עם Math.random, והקבועים PI ו-E, עם טיפוס ההחזרה של כל אחת.
Control Flow
- if-elseאיך מקבלים החלטות ב-Java עם if, else if ו-else: תנאים בוליאניים, שרשור ענפים, קינון, האופרטור הטרנרי והטעויות הנפוצות שמכשילות אנשים.
- switchמשפט switch ב-Java בהסבר מלא: תוויות case, break ונפילה, ענף default, קיבוץ מקרים, צורת החץ המודרנית וביטויי switch.
- לולאת forלולאת for של Java בהסבר ברור: הלולאה הקלאסית בת שלושת החלקים, מעבר על מערכים ורשימות, לולאות מקוננות, break ו-continue, ולולאת for-each המשופרת.
- לולאות whileלולאת while ב-Java בהסבר מלא: while שבודקת את התנאי קודם, do-while שרצה לפחות פעם אחת, קריאת קלט עד ערך זקיף, break ו-continue, ואיך נמנעים מלולאות אינסופיות.
- לולאת for-eachלולאת for-each (ה-for המשופר) של Java בהסבר ברור: מעבר נקי על מערכים ואוספים, מתי להשתמש בה, ומלכודת השינוי שמכשילה את כולם.
Arrays & Collections
- מערכיםאיך מערכים עובדים ב-Java: אורך קבוע, הצהרה ואתחול, אינדקסים, length, לולאות, מערכים רב-ממדיים ומחלקת העזר Arrays.
- ArrayListאיך משתמשים ב-ArrayList של Java, הרשימה שמשנה את גודלה ומחליפה מערך רגיל: add, get, remove, size, לולאות ומיון.
- HashMapאיך משתמשים ב-HashMap של Java לחיפושי מפתח-ערך: put, get, getOrDefault, containsKey, מעבר על הרשומות והדפוסים שמשתמשים בהם הכי הרבה.
- HashSetאיך משתמשים ב-HashSet של Java לאוספים של ערכים ייחודיים: add, contains, remove, הסרת כפילויות מרשימה, ושילוב קבוצות עם איחוד, חיתוך והפרש.
- מעבר על אוספיםהדרכים לעבור על אוספים ב-Java: לולאת for-each, ה-Iterator, לולאות עם אינדקס והמתודה forEach, ואיך למחוק איברים בבטחה תוך כדי מעבר.
Methods
- מתודותמה זו מתודה ב-Java, איך מצהירים עליה וקוראים לה, ערכי החזרה מול void, מתודת main הסטטית, ואיך מתודות שומרות על קוד מאורגן ורב פעמי.
- פרמטרים של מתודותאיך עובדים פרמטרים של מתודות ב-Java: העברת ארגומנטים, ההבדל בין פרמטרים לארגומנטים, כלל ההעברה לפי ערך של Java והחזרת ערכים.
- העמסת מתודותאיך העמסת מתודות (method overloading) ב-Java מאפשרת לכמה מתודות לחלוק שם אחד אבל לקבל פרמטרים שונים, איך המהדר בוחר גרסה, ואילו מלכודות של עמימות כדאי להכיר.
- Varargsאיך varargs (...) ב-Java מאפשרים למתודה לקבל כל מספר של ארגומנטים, איך הם הופכים למערך, הכלל של vararg אחד בלבד בסוף, והמלכודות של קריאה ריקה ושל עמימות.
Classes & Objects
- מחלקותמה זו מחלקה ב-Java, איך מגדירים שדות ומתודות, יוצרים אובייקטים עם new, מה התפקיד של this, ולמה מצב המופע שמור על האובייקט.
- בנאיםאיך בנאים עובדים ב-Java: בנאי ברירת המחדל, בנאים עם פרמטרים, this, העמסת בנאים ושרשור עם this() ו-super().
- ירושהאיך תת-מחלקה ב-Java יורשת שדות ומתודות עם extends, קוראת למחלקת האב דרך super ודורסת התנהגות, וגם הטעויות הנפוצות.
- ממשקיםמה זה ממשק (interface) ב-Java, איך מגדירים וממשים אותו, מתודות default ו-static, ובמה ממשקים שונים ממחלקות מופשטות.
- מחלקות אבסטרקטיותמה זו מחלקה אבסטרקטית ב-Java, איך מצהירים על מתודות אבסטרקטיות, למה אי אפשר ליצור ממנה מופע, ומתי לבחור במחלקה אבסטרקטית במקום בממשק.
- פולימורפיזםאיך פולימורפיזם ב-Java מאפשר למשתנה אחד להפנות לטיפוסים רבים, למה מתודות דרוסות נבחרות בזמן ריצה, ואיך משתמשים ב-upcasting, downcasting ו-instanceof בבטחה.
- Access Modifiersאיך ארבע רמות הגישה של Java, public, private, protected ו-package-private, קובעות מה קוד אחר יכול לראות ולשנות.
- איברים סטטייםמה עושה מילת המפתח static ב-Java, איך שדות ומתודות סטטיים שייכים למחלקה ולא לאובייקטים, ומתי כדאי להשתמש בבלוקים סטטיים ובקבועים.
- Enumsמה זה enum ב-Java, איך מצהירים עליו, מוסיפים שדות ומתודות, עושים עליו switch, ולמה enum עדיף על ערימה של קבועי int או String.
Generics & Functional
- Genericsמה הם generics ב-Java, איך כותבים מחלקות ומתודות גנריות, פרמטרי טיפוס מוגבלים, wildcards, ולמה type erasure חשוב.
- ביטויי Lambdaמה זה ביטוי lambda ב-Java, תחביר החץ, איך הוא מממש ממשק פונקציונלי, הפניות למתודות ולכידת משתנים.
- Streamsאיך מעבדים אוספים עם ה-Stream API של Java: filter, map, sorted, collect, count ו-reduce, ובונים צינורות קריאים במקום לולאות ידניות.
- Optionalמה זה java.util.Optional, איך יוצרים אותו, ואיך קוראים את הערך שלו בבטחה עם map, filter, orElse ו-ifPresent במקום בדיקות null.
Errors & Debugging
- Exceptionsמה זו exception ב-Java, איך קוראים stack trace, ההבחנה בין checked ל-unchecked, היררכיית החריגות ואיך לזרוק חריגות משלכם.
- try-catchאיך משתמשים ב-try-catch ב-Java כדי לטפל בחריגות: תפיסת טיפוסים ספציפיים, בלוק finally, try-with-resources והטעויות שמסתירות באגים.
- NullPointerExceptionמה באמת אומרת NullPointerException ב-Java, הדרכים הנפוצות לגרום לה, איך לקרוא את ההודעה, והדפוסים שמונעים אותה.