CodeGym /בלוג Java /Random-HE /רמה ישנה 06
John Squirrels
רָמָה
San Francisco

רמה ישנה 06

פורסם בקבוצה

מפת דרכים של מפתח Java

חבר שלי תהה למה מפתחים תמיד כל כך שמחים. התשובה שאיתה הגיעה הייתה פשוטה ומפתיעה: הם עושים מה שהם אוהבים ומרוויחים כסף גדול. ברוכים הבאים לעולם מפתחי התוכנה. רמה ישנה 06 - 1

שכר מפתח תוכנה

אני רוצה לספר לכם על משכורות המפתחים. איך הארץ שוכנת עם משכורות, לאן כדאי ללכת לעבוד, ולאן לא. אם אינך מפתח ומנסה לברר זאת בעצמך, ייתכן שתקבל נתונים שנוי במחלוקת למדי. הנקודה העיקרית היא שגורם מרכזי המשפיע על שכר היזם אינו הכשירות, אלא מקום העבודה. לפעמים, בהינתן רמת הכשרה שווה, ההבדל בין מקום עבודה טוב לרע יכול להיות פי 2 עד 10(!) כל רגע נתון של ההסמכה שלך קבועה. אתה לא יכול להיות מוכשר כפול בחודש ולקבל תשלום כפול. אבל אתה יכול לשנות מקום עבודה תוך חודש ולקבל משכורת גדולה פי שניים. פעם בזרימת חודשיים המשכורת שלי מוכפלת בשלוש (!) - חוויה בלתי נשכחת. אז בואו נגלה איזה מקום הכי טוב. להלן שלושת הגורמים המשפיעים בעיקר על רמות השכר בחברות:
  1. האם העסק העיקרי של החברה הוא פיתוח תוכנה
  2. בין אם החברה מכוונת לשוק גלובלי או מקומי
  3. היכן ממוקם המשרד הראשי: מדינה מפותחת או מדינה מתפתחת
שימו לב שהעיר בה אתם עובדים אינה רלוונטית. כלומר, אם אתה מרוויח פי חמישה פחות בברצלונה מחברך בניו יורק, כנראה שהגורמים שציינתי השפיעו. 

מספרים ספציפיים

מכיוון שהמשכורות שונות בחלקים שונים של העולם, אני מציע לקחת את השכר של מפתח Java בכיר עם 5 שנות ניסיון כנקודת התחלה ולקרוא לזה "5 שנים מקסימום". כל הנתונים להלן יינתנו כאחוז מסכום זה. הנה כמה דוגמאות למשכורות "מקסימום 5 שנים" בערים שונות בעולם: רמה ישנה 06 - 2להלן מוצג כמה מפתח Java בכיר עם ניסיון של 5 שנים עשוי להרוויח בהתאם לחברה שבה הוא עובד: רמה ישנה 06 - 3רמה ישנה 06 - 4מה הדבר הכי מוזר במצב הנוכחי? מחצית מכל המתכנתים עובדים בחברות ברמה 1 ו-2. אתה רוצה לדעת, מה הקאץ'? יש מאות משרות פנויות שנפתחו בחברות ברמה 3 ו-4. חברות אלו מוכנות להציע לך משכורות גבוהות יותר ובדרך כלל תנאי עבודה טובים יותר. אני מכיר שני ג'אווה ג'וניור, אחד מהם קיבל עבודה בתשלום של כ-3% מ"מקסימום 5 שנים" (חברה ברמה 1), ואחר קיבל עבודה עם 30% משכר "מקסימום 5 שנים" (רמה 4). אז למה לקבל פחות? הביקוש למתכנתים עולה על ההצעה - אל תלך לעבוד במקום שבו משלמים לך פחות! מסקנה 1: השכר הממוצע למפתחי ג'אווה (עם כל ניסיון) הוא 40%-50% מהשכר של "5 שנים מקסימום". מסקנה 2: השכר הממוצע שלך בעוד 5 שנים יהיה כ-90%-110% מהשכר של "5 שנים מקסימום", אם לא תעבוד בחברות ברמה 1 ו-2, ועובד בחברות ברמה 3 ו-4.

מה אתה יכול להשיג אלא אם כן אתה עושה דברים מטופשים

אם אתה מתחיל לעבוד על החינוך העצמי שלך בתכנות עכשיו, השכר שלך יכול להיראות כך: רמה ישנה 06 - 5

לְתַכְנֵן

0-3 חודשים (סטודנט)

אתה יודע מעט מאוד על תכנות. אולי למדת את זה בבית הספר או במכללה ברמה בסיסית. מה שאתה צריך לעשות זה ללמוד איך לתכנת וללמוד Java. המטרה שלך היא לקבל עבודה כמפתח ג'אווה ג'וניור בחברה ברמה 3 ומעלה. במשך שלושת החודשים הראשונים של התוכנית לא תקבל כלום, כי אתה רק לומד כיצד לתכנת. אבל ככל שמתחילים מוקדם יותר טוב יותר. הזמן הטוב ביותר הוא עכשיו. בעתיד, כאשר יש לך משפחה והמון הלוואות, יהיה הרבה יותר קשה להזדכות מחדש. כדי לתקן את הטעות שלך תצטרך להניח בצד כסף כדי לשלם עבור לפחות שנה של חיים נורמליים. אל תעשה טעויות מטופשות.

3-15 חודשים (מפתח ג'אווה ג'וניור)

אתה כבר עובד כמפתח תוכנה והניסיון שלך גדל מדי יום. אל תירגע. יש לך הרבה מה לעשות לפני שתנוח על משוטים. מה שאתה צריך לעשות הוא - ללמוד טכנולוגיות שתצטרך כמפתח בינוני. מה אלה? העולם משתנה כל הזמן. אני אעמיס אותך בעצות והחיים ישנו את הכל. מצא כמה משרות פנויות באינטרנט וראה מה אתה צריך להגיש מועמדות. הקפד לקרוא ספר מאת ברוס אקל "לחשוב בג'אווה". המטרה שלך בשנה הראשונה לעבודה כמפתח ג'אווה ג'וניור היא להגיע לרמה של מפתח Java Middle. אף אחד לא אומר שזה יהיה קל, אבל זה אפשרי עבור אדם ממוקד מטרה. זה יגדיל את המשכורת שלך ברגע עד 40% מ"מקסימום 5 שנים" (50 אלף דולר ל-SF ולונדון, 6 אלף דולר לבנגלור).

תכנות דו-שנתי (מפתח ג'אווה אמצעי, רמה 1)

עשית עבודה טובה בשנה שעברה ועכשיו אתה מפתח Java Middle. אתה יכול לחיות די טוב ולהרוויח 50% ממשכורתו של מפתח Java בכיר. אתה מקבל כמה משימות רציניות בעבודה והניסיון שלך גדל באופן משמעותי. אתה תגיע לרמה של מפתח Java בכיר תוך שנתיים או שלוש. לא צריך למהר. ממילא לא תקבל עליות גדולות בשכר. מה שאתה צריך לעשות זה ללמוד דפוסי עיצוב, לקרוא - הקוד של McConnell Complete. שפר את איכות הקוד וכישורי הצוות שלך. צור כלל של קריאת ספר אחד על תכנות מחשב בכל חודש. ואז, בעוד 4 שנים תהיו חכמים יותר ב-50 ספרים מכל השאר. אל תדחה את זה: לא תקבל כמות גדולה יותר של זמן פנוי, חוץ מזה, סביר להניח שתקים משפחה, או אם יש לך כזו, היא תגדל. המטרה שלך היא לבחור כמה טכנולוגיות להתמחות בהן כמפתח Java בכיר. אתה לא יכול ללמוד את כולם, אתה יודע. וזו תמיד החלטה טובה להפוך לגורו בהתמחות אחת. רמה ישנה 06 - 6

תכנות תלת-ממדיות (מפתח ג'אווה אמצעי, רמה 2)

כעת אתה מפתח בינוני מנוסה ואתה חושב להיות מפתח בכיר. זה נעים וגם יוקרתי. המשכורת שלך עולה על 60% מ"המקסימום של 5 שנים" (10 אלף דולר בבנגלור, 25 אלף דולר בקייב, 40 אלף דולר בברלין, 80 אלף דולר בניו יורק). מרגע זה והביקוש לאנשי מקצוע כמוך עולה ההצעה. תמיד תוכל למצוא עבודה תוך מספר ימים וכמעט לא תרוויח פחות ממה שאתה מרוויח עכשיו. זה, כמובן, אם אתה לא עושה שום דבר טיפשי. מה שאתה צריך לעשות זה להמשיך ללמוד את הטכנולוגיות שבחרת. תעבוד טוב יותר. לא למען המעסיק שלך, למען שלך. הגש בקשה להשתתף בפרויקטים הכוללים טכנולוגיות מבטיחות (כמו BigData, כרגע מאמר זה נכתב). אתה תבלה 8 שעות ביום במשרד בכל מקרה, אז למה לא לקבל קצת יותר כסף עבור זה, ומה שחשוב הרבה יותר, הניסיון היקר ביותר שתזדקק לו בעתיד. המטרה שלך היא למצוא עבודה חדשה. תמיד אפשר למצוא צוות טוב. אתה תתמודד עם פרויקטים וטכנולוגיות חדשות. אתה לא צריך להשתרש לכיסא שלך. אם אתה עדיין עובד בחברה ברמה שלישית, תחשוב על העסקה לרמה רביעית.

תכנות שנה 5 (מפתח ג'אווה בכיר, רמה 1

אתה כעת מפתח בכיר. אולי, לא הגיע לך, ואתה מרגיש את זה. ובכל זאת, ברכותיי. זה לא משנה אם אתה ראוי לתפקיד שלך עכשיו, כל מה שחשוב שתהיה ראוי לו בעתיד. אני חושב שתסכים שעדיף לקבל עבודה טובה ואחרי לצמוח לרמה הנדרשת אז להיפך. אני מקווה שלא שכחת את עצתי לקרוא ספר אחד בחודש? כל תלמיד יקנא בידע ובכישורים שלך עכשיו. ליתר דיוק, הוא יתפלל עליהם. רק תחשוב על זה: יש לך רווחים רציניים, קרוב ל-90% מהמשכורת של "5 שנים מקסימום". אתה כנראה עדיין צעיר. העולם למרגלותיך. מה שאתה צריך לעשות הוא להעריך מחדש את הטכנולוגיות שבחרת. אולי, אתה צריך לשנות התמחות. העולם השתנה, הטכנולוגיות השתנו, וצברת לא מעט ידע בשנתיים האחרונות. מה שתבחר עכשיו יהפוך עבורך לכותרת לכמה שנים הבאות. זה הזמן לבחור את הטכנולוגיות המועדפות עליך. המטרה שלך היא לבחור את כיוון הצמיחה שלך. הם רבים, אף אחד לא יכול למנות את כולם, אבל הבחירה שלך צריכה להיעשות כבר עכשיו. אם תעשה שינוי קטן היום, תקבל שינוי גדול בעתיד.

תכנות שנה 6 (מפתח ג'אווה בכיר, רמה 2)

החלטת על עתידך ואתה עובד על כך שחלומך יתגשם. כיוון שנבחר נכון יחד עם רצון להתקדם – והתוצאה לא תארך זמן רב. מזל טוב. אני שמח לראות שיש עוד אדם אחד שהנחית את החלום שלו. יש אמת אחת עמוקה. אנשים מרבים להעריך יתר על המידה את מה שהם יכולים להשיג בשנה ומזלזלים במה שהם יכולים לעשות בחמש. תסתכל חמש שנים אחורה. זה כל - כך. מה שאתה צריך לעשות זה להימנע מהחלטות לא נבונות ולא להתעצל. המטרה שלך היא לבחור כיוון ולהתקדם. או שחשבתם שזה נגמר כאן? זכור את הסיום שלך. זה לא הסוף, זו רק ההתחלה.

אתה התמחות עתידית

רמה ישנה 06 - 7אתה יכול לצמוח כמומחה טכני (ענף עליון), כהנהלה (ענף תחתון) או כיועץ מקצועי/עצמאי שכיר (ענף בינוני). הכל תלוי מה אתה מעדיף.

הקריירה של מפתח Java

הקריירה של המפתחים שונה מכל קריירה אחרת. אתה לא צריך להיות מנהל כדי להרוויח כסף טוב. לעתים קרובות קורה שמפתח בכיר מרוויח יותר מהמנהל-הבוס שלו. ככל שתקבל יותר ניסיון כך יחסי העבודה שלך עם הבוס משתנים מ"בוס-כפוף" ל"כוכב והמנהל" חזקים יותר. מפונקים לדעת שהמפתחים שווים שלהם בוחרים פרויקטים ומשרות פנויות. בואו נשמח בשביל אלה משלנו. אז מה אתה צריך כדי להפוך למפתח פופולרי כל כך מוערך ובקנה מידה עולמי? אתה חייב להיות בעל ניסיון עצום ברוב הטכנולוגיות המבוקשות והחדשות. איך להשיג זאת? ראה למטה. רמה ישנה 06 - 8ברגע שאתה מקבל עבודה כמפתח, שני דברים מתחילים לקרות לך; עדיין, הם לא תמיד גלויים. 1. אתה צובר ניסיון בפרויקטים אמיתיים וגדל מהר. שנה אחת בעבודה זו מעניקה לך יותר ניסיון מ-5 שנים בקולג'. ניסיון הוא נושא כל כך חשוב שהם כותבים "מפתח Java עם ניסיון של 3 שנים נדרש" במשרות הפנויות שפורסמו. 2. אתה לומד טכנולוגיות חדשות 8 שעות ביום ומקבל על כך שכר טוב. אתה באמת לא יכול להפריז בעובדה הזו. במקרים מסוימים הכישורים שאתה מקבל הם כל כך יקרי ערך שיכולת לעבוד בחינם כדי להשיג אותם או אפילו לשלם. אם תבחר פרויקטים שאתה עובד עליהם בחוכמה, אתה עומד לקבל קריירת מפתח תוכנה סוחפת ראש. אז... מה לבחור? לעתים קרובות קורה שאתה לא יודע איזו טכנולוגיה תהיה שימושית, אז אתה מתחיל לבחור ב"לייק ולא אוהב" ו"מגמות אופנה". אולי יתמזל מזלך ואולי לא. אז כדאי שתדעו את היעד שלכם מראש. יש המון דרכים להתפתח עבור מתכנתים, אז כדי לעשות את זה פשוט, אבחר כמה מהן ואכתוב את החזון שלי לגבי המצב קדימה. אל תחשוב שהדפוס הזה הוא קו קשה; זה דווקא מבט פשוט של הדברים שהוצגו כדי להבהיר את זה.

מפתח בן מאתיים שנה

אם אתה נהנה יותר מהתכנות, אז זו הדרך שלך: מפתח בכיר, אחר כך מפתח טכני ראשי וארכיטקט. כך תוכלו לעבוד כמפתחים 50 שנה ויותר. ברוב המקרים המשכורות של מפתחים בכירים ומפתחים טכניים עולים על אלה של המנהלים שלהם. אז קבל תמורה לכספך.

מנהל. יש לך מזל שאתה לא כמו האחרים

ניגשת אל האויב. רק צוחק. אם אתה מגלה כישורי ארגון מעולים, הדרכים שלך הן: ראש צוות, ולאחר מכן מנהל פרויקטים. זה ייתן לך הזדמנות להיות ראש מחלקה ולפתוח עסק משלך. זה מה שאתה רוצה, לא?

הבית הוא היכן שהלב נמצא

רמה ישנה 06 - 9אם כבר הקמת משפחה , אז אולי אתה רוצה לחיות חיים נחמדים ושקטים במדינה עם כלכלה חזקה. אולי אתה שוקל לעבור לקנדה, ארה"ב, שוויץ או אפילו אוסטרליה. יש לך כישורים מצוינים ומקצוע מבוקש. לא תצטרכו להתחיל משטיפת כלים. תתחיל כמפתח ג'אווה בכיר. כנראה, מרוויח הרבה. לא נורא, הא?

לראות את נאפולי ולא למות.

אין לך עדיין משפחה ואתה אוהב לטייל . oDesk זה הכל. מצא לקוח, הסכים לתעריף של $20-$50 לשעה, קח איתך מחשב נייד ולך! המשכורת שלך תספיק לחיות בכל מקום בעולם. למה שלא תתחיל להגשים את החלומות שלך מיד?

אני לא רוצה לתכנת, אני בת..

אם את בת , ייתכן שתצטרך לקחת חופשת לידה . זה נשמע כמו בדיחה סקסיסטית, וזהו. ובכל זאת, יש בזה הרבה שכל ישר. סביר להניח שלקיחת חופשת לידה תוכל לקבל הרבה כסף לחופשת לידה (במדינות עם הגנה סוציאלית גבוהה). יש חברות שלא משלמות כלום, ויש כאלה שמשלמות טוב. אחת הסטודנטיות שלי קיבלה שליש מהמשכורת השנתית בחופשת לידה. וזה קרה באביב 2009, במהלך פיטורים. ובעוד שנה וחצי אתה עשוי לחזור, להיות לפחות מפתח אמצעי.

לבבל 6

רמה ישנה 06 - 10

1 אלי. נראות אובייקט. ריק

היי, אמיגו! היי, אלי! תספר לי משהו מעניין היום? - היום אספר לך על חייו של חפץ . לאחר יצירת אובייקט, הוא קיים (חי) עד שלפחות משתנה אחד מאחסן את הכתובת שלו (יש לפחות הפניה אחת לאובייקט). אם אין יותר הפניות, אז האובייקט מת. דוגמאות: רמה עתיקה 06 - 11- האובייקט «טומי החתול» קיים בשורה היחידה מרגע יצירתו. בשורה הבאה, רק המשתנה המאחסן את ההתייחסות שלו מוגדר ל- null והמכונה הוירטואלית של Java הורסת את האובייקט. - האובייקט «חתול סמי» לאחר יצירתו מאוחסן במשתנה cat1. או, ליתר דיוק, cat1 מאחסן הפניה לאובייקט. לאחר מכן, כמה שורות מתחת להפניה זו מועתקות למשתנה cat2. לאחר מכן, הפניה לאובייקט אחר מאוחסנת ב-cat1, וההתייחסות ל- «cat Sammy» נשארת רק ב-cat2. לבסוף, בשורה האחרונה של השיטה main, ההתייחסות האחרונה לאובייקט מוגדרת ל- null. - האובייקט «cat Maisy» קיים בשורה היחידה מרגע יצירתו. בשורה הבאה למשתנה cat2 מוקצה ערך נוסף וההתייחסות ל- «cat Maisy» אבדה. החפץ הופך לבלתי ניתן להשגה ונחשב לזבל (מת). - האובייקט «חתול ג'ינג'ר» קיים מרגע יצירתו ועד סוף השיטה. בזמן ריצה כאשר השיטה יוצאת, המשתנה cat1 יושמד, ואחרי האובייקט «cat Ginger» יושמד גם כן. - זה ברור. - עם זאת, אם אתה יוצר את האובייקט Cat בשיטה כלשהי ומאחסן את ההפניה שלו במשתנה מחלקה, אז Cat יתקיים כל עוד יש הפניה אליו מאובייקט קיים אחר. - בדרך כלל, חפץ לא נהרס מיד. מחשב וירטואלי Java מפעיל מדי פעם את איסוף האשפה כדי להסיר אובייקטים שאינם בשימוש. אני אספר לך על זה מאוחר יותר. - אם אתה רוצה שמשתנה כלשהו יפסיק לאחסן הפניה לאובייקט, אתה יכול להקצות לו ערך null או הפניה לאובייקט אחר.

2 פרופסור, איסוף אשפה

רמה ישנה 06 - 12היי, אמיגו! הנה קישור שימושי על איסוף האשפה בג'אווה. זה בהחלט לא ההרצאות המצוינות שלי, אבל זה מספיק טוב: Java Garbage Collection Basics

3 אלי, תסיים

- שוב שלום! עכשיו אני אתן לך מבוא קצר לשיטה finalize() . שיטה זו נקראת על ידי מכונה וירטואלית של Java על האובייקט לפני שהאובייקט מושמד. למעשה, שיטה זו הפוכה מהקונסטרוקטור. בשיטה זו ניתן לשחרר את המשאבים המשמשים אובייקט. - למחלקה Object יש את השיטה הזו, לכן, לכל מחלקה יש את זה ( כל המחלקות ב-Java נחשבות לירושות מהכיתה Object ומכילות עותק של השיטות שלה ). אם תכתוב במחלקה שלך את השיטה finalize() והיא תיקרא לפני שאובייקטים של מחלקה זו יושמדו. דוגמה: רמה ישנה 06 - 13- הבנתי. - אבל יש דבר אחד. המכונה הווירטואלית של Java מחליטה בעצמה אם לקרוא לשיטה זו או לא. לרוב, אובייקטים שנוצרו בשיטה ומוכרזים כזבל לאחר יציאתה, מושמדים מיד וללא כל קריאות לשיטת finalize(). שיטה זו היא מכשיר נוסף לשליטה על הקצאת משאבים חיצונית (מתוך JVM). כדאי לשחרר את כל המשאבים החיצוניים המשומשים ולאפס הפניות מאוחסנות כאשר אתה רוצה שהאובייקט יושמד. אני אספר לכם על היתרונות של שיטה זו ועל פרטי עבודתה ב-10 או 20 רמות. בינתיים, אתה צריך לדעת שני דברים: שיטה כזו קיימת, ו( הפתעה! ) היא לא תמיד נקראת.

4 אלי, חיי אובייקט

- אני גם רוצה לספר לך כמה דברים מעניינים על חיי האובייקט. בג'אווה, קשה מאוד לאבד את האובייקט בטעות; אם יש לך הפניה לאובייקט, זה אומר שהאובייקט בוודאי חי. - בתוך הפניה לאובייקט מאחסנת מספר - כתובת של אובייקט זה בזיכרון. אתה לא יכול לשנות את המספר הזה, להגדיל או להקטין אותו. אינך יכול ליצור הפניה כאשר יש לך רק כתובת בזיכרון. אתה יכול ליצור רק אובייקט חדש ולהקצות את ההתייחסות שלו למשתנה. זו הדרך היחידה לקבל הפניה חדשה. - אני רואה. כלומר, אם אני מגדיר ל-null (מחק) את כל הפניות לאובייקט, לעולם לא אקבל את הפניות האובייקט ואיגש אליה? - כן. אבל לעתים קרובות ההפך הוא הנכון - יש יותר מדי חפצים חיים שאינם בשימוש. רוב התוכניות יוצרות עשרות אובייקטים ומאחסנות אותם ברשימות שונות בזמן ריצה, אך לעולם לא מנקות את הרשימות הללו. - לרוב, מתכנתים מתייגים אובייקטים לא רצויים כ"נמחקים", זה הכל. לאף אחד לא אכפת מהסרתם מהרשימות. אז תוכניות ג'אווה גדולות נוטות להתנפח - יותר ויותר אובייקטים שאינם בשימוש נשארים בחיים בזיכרון. - זה הכל. בעתיד תמיד אפנה את תשומת לבך לחפצים שאינם בשימוש ולסילוקם הנכון. - אוקיי, תודה. הבהרת כמה דברים לגבי ההפניות.

5 דייגו, משימות לכל החיים של אובייקט

היי, אמיגו! הנה כמה משימות בשבילך:
משימות
1 1. שיטת finalize() של מחלקה Cat
כתוב שיטה מוגנת void finalize() throwsable בכיתה Cat
3 2. Classes Cat and Dog ושיטת finalize() לכל מחלקה בכל מחלקה
Cat and Dog כתוב שיטה finalize() אשר מציגה למסך הודעה שהאובייקט מושמד.
3 3. 50,000 אובייקטים ממחלקת חתול ו-50,000 אובייקטים מכיתה Dog
צור בלולאה 50,000 אובייקטים ממחלקת חתול ו-50,000 אובייקטים מכיתה דוג. (המכונה הוירטואלית של Java תהרוס אובייקטים שאינם בשימוש, אז השיטה finalize() תיקרא לפחות פעם אחת).
4 4. Cat counter
ב-Cat constructor [public Cat()], הגדל את ה-cat counter (משתנה סטטי catCount מאותה מחלקה) ב-1. בשיטה finalize() הקטינו ב-1.

6 אלי, שיעורים ושיטות סטטיות

- הנה נושא חדש ומעניין. אני רוצה לספר לכם על המשתנים והשיטות הסטטיות. - אה, כבר שמעתי על משתנים סטטיים. גם לגבי שיטות סטטיות, אני מניח. אבל אני רוצה לקבל יותר פרטים. - כאשר מכריזים על משתנים במחלקה, אנו מציינים אם המשתנים הללו נוצרים במופע משותף יחיד, או שיש צורך ליצור עותקים שלהם עבור כל אובייקט. כברירת מחדל, עותק חדש של משתנה מחלקה נוצר עבור כל אובייקט של מחלקה זו. כך זה נראה: רמה ישנה 06 - 14- למרות שהמשתנים cat1.name ו- cat2.name מוכרזים באותה מחלקה - Cat, הם מאחסנים ערכים שונים, מכיוון שהם קשורים לאובייקטים שונים. - זה ברור. - משתנה סטטי קיים במופע בודד; אתה צריך לגשת אליו באמצעות שם מחלקה: רמה ישנה 06 - 15- זה גם ברור. - גם שיטות הכיתה מחולקות לשתי קטגוריות. שיטות רגילות נקראות על האובייקט ויש להן גישה לנתונים של אובייקט זה. לשיטות סטטיות אין גישה כזו , כי פשוט אין להן הפניה לאובייקט. שיטות סטטיות מסוגלות לגשת למשתנה סטטי של מחלקה זו או לשיטות סטטיות אחרות. - שיטות סטטיות אינן יכולות לגשת לשיטות לא סטטיות או למשתנים לא סטטיים! - למה ככה? - כל משתנה מחלקה רגיל ממוקם בתוך אובייקט. כל שיטה יכולה לגשת למשתנה כזה רק כאשר יש לה הפניה לאובייקט זה. התייחסות כזו לא מועברת לשיטה סטטית. - מה לגבי שיטות רגילות? - למתודה הרגילה מועברת התייחסות נסתרת לאובייקט שיטה זו נקראת. המשתנה המאחסן הפניה זו נקרא זה . לפיכך, השיטה תמיד יכולה לקבל נתונים של אובייקט משלה או לקרוא לשיטה לא סטטית אחרת של אותו אובייקט. - Null מועבר למתודה סטטית במקום הפניה לאובייקט. לכן, שיטה סטטית לא יכולה לגשת למשתנים ומתודות שאינם סטטיים - פשוט אין לה התייחסות לאובייקט שהם קשורים אליו. - אני רואה. - כך פועלות שיטות לא-סטטיות רגילות: רמה ישנה 06 - 16- וכך עובדות שיטות סטטיות: רמה ישנה 06 - 17- משתנה או שיטה הם סטטיים אם הם מוכרזים עם מילת המפתח סטטית. - ומה טובתן של שיטות כאלה, אם הן מוגבלות כל כך? - לגישה הזו יש גם יתרונות. - ראשית, אינך צריך להעביר שום התייחסות לאובייקט כדי לגשת לשיטות ולמשתנים סטטיים . - שנית, לפעמים יש צורך שהמשתנה יהיה יחיד במינו . כמו, למשל, המשתנה System.out (משתנה סטטי מחוץ למחלקה System). - ושלישית,לפעמים יש צורך לקרוא למתודה לפני שתוכל ליצור אובייקטים כלשהם . - באיזו הזדמנות? - מדוע לדעתך השיטה הראשית מוכרזת סטטית? לקרוא לזה מיד לאחר שהמחלקה נטענת לזיכרון לפני שניתן יהיה ליצור אובייקטים כלשהם.

7 רישא, שיעורים ושיטות סטטיות

- בנוסף לשיטות סטטיות יש גם מחלקות סטטיות . נשקול את המקרה הזה מאוחר יותר, אני רק הולך להראות לך דוגמה שלו: רמה ישנה 06 - 18- אתה יכול ליצור כמה אובייקטים של הכיתה Cat כפי שאתה רוצה. בניגוד למשתנה סטטי, שקיים במופע בודד. - המטרה העיקרית של ה-modifier static לפני הצהרת מחלקה היא לשמור על קשר בין המחלקה Cat למחלקה StaticClassExample . באופן כללי, class Cat אינה קשורה (אין לה התייחסות נסתרת) לאובייקט StaticClassExample ואינה יכולה לגשת למשתנים רגילים (לא סטטיים) של StaticClassExample. - אז אני יכול ליצור שיעורים בתוך מחלקות אחרות? - כן. Java מאפשרת זאת. עכשיו, אל תחשוב על זה יותר מדי. מאוחר יותר אסביר עוד כמה דברים, והכל יהיה קצת יותר קל. - אני מקווה.

8 דייגו, משימות על שיטה סטטית

היי, אמיגו! הנה כמה משימות מעניינות על שיטות סטטיות:
משימות
1 1. Class Cat ומשתנה סטטי catCount
כתוב משתנה סטטי int catCount במחלקה Cat. צור בנאי [ public Cat() ], שבו יש להגדיל את המשתנה הנתון ב-1.
2 2. שיטות סטטיות: int getCatCount() ו-setCatCount(int)
הוסף שתי שיטות סטטיות למחלקה Cat: int getCatCount( ) ו- setCatCount(int) שבאמצעותן ניתן לקבל / לשנות את מספר החתולים (המשתנה catCount)
3 3. Class Util
יישם שיטה סטטית כפול getDistance(x1, y1, x2, y2) . זה צריך לחשב את המרחק בין נקודות. השתמשו בשיטה double Math.sqrt(double a) כדי לחשב את השורש הריבועי של הפרמטר שעבר
4 4. Class ConsoleReader
כתוב מחלקה ConsoleReader, שיהיו לו 4 שיטות סטטיות:
- String readString() לקריאת מחרוזות מהמקלדת
- int readInt() לקריאת מספרים מהמקלדת
- double readDouble() לקריאת מספרים חלקים מהמקלדת
- void readLn () כדי להמתין ללחיצה על Enter [השתמש ב-readString()]
5 5. Class StringHelper
כתוב מחלקה StringHelper, שתהיה לה 2 שיטות סטטיות:
- String multiply(String s, int count) אמור להחזיר למחרוזת ספירה חוזרת של פעמים.
- String multiply(String s) אמור להחזיר את המחרוזת s שחוזרת על עצמה 5 פעמים.

דוגמה:
Amigo → AmigoAmigoAmigoAmigoAmigo

9 פרופסור, היקף ותקופת חיים סטטיים של אובייקט

רמה ישנה 06 - 19- זה שוב אני. לצערי, אני לא יכול לתת לך קישורים היום. ההרצאות הנהדרות האלה אבדו איפשהו. אני חושש שהיום אתה צריך לעשות לבד. אבל כדאי להקשיב יותר לאלי ורישה, הם תמיד יכולים ללמד אותך משהו. ובכל זאת נסה את זה: מחזור חיים של אובייקט

10 חוליו

היי, אמיגו! עשית עבודה נהדרת היום. בגלל זה אני פשוט לא יכול לתת לך יותר. יאללה, שב, ההופעה מתחילה:

11 קפטן סנאים

– שלום חייל! - בוקר טוב אדוני! - יש לי חדשות מדהימות בשבילך. הנה בדיקה מהירה כדי לחזק את הכישורים שלך. עשה זאת כל יום, ותשפר את כישוריך במהירות. משימות תוכננו במיוחד לביצוע ב-Intellij IDEA.
משימות נוספות לעשות ב-Intellij Idea
1 Class Cat ומשתנה סטטי catCount
כתוב משתנה סטטי public int catCount במחלקה Cat. צור בנאי [Public Cat()]. תן למשתנה הסטטי catCount להגדיל ב-1 בכל פעם שאתה יוצר חתול (אובייקט חדש Cat). צור 10 אובייקטים Cat והצג את הערך של המשתנה catCount .
2 2. חתולים סטטיים
  1. הוסף משתנה סטטי ציבורי cats (ArrayList<Cat>) במחלקה Cat.
  2. בכל פעם שאתה יוצר חתול (אובייקט חדש חתול), תן לחתול החדש הזה להתווסף לחתולים המשתנים . צור 10 אובייקטים Cat.
  3. השיטה printCats() אמורה להציג את כל החתולים. אתה צריך להשתמש בחתולים המשתנים בשיטה.
טיפ:
כדי ליצור משתנה של חתולים השתמש בשורת הקוד:
public static ArrayList<Cat> cats = new ArrayList<Cat>();
3 3. הזז שינוי סטטי אחד
הזז שינוי סטטי אחד כך שהקוד יתחבר.
4 4. מספר מינימלי של מילות מפתח סטטיות
הוסף את המספר המינימלי של מילות מפתח סטטיות כדי לגרום לקוד להדר ולהשלים את התוכנית בהצלחה.
5 5. יש רעיונות חדשים? בוא נחשוב...
  1. כתוב רעיון מחלקה סטטית ציבורית בכיתה פתרון
  2. כתוב שיטה public String getDescription() במחלקה Idea כדי להחזיר כל הודעה שאינה ריקה
  3. במחלקה Solution צור שיטה סטטית public void printIdea(Idea idea) כדי להציג תיאור של הרעיון - זה מה שהשיטה getDescription() מחזירה
6 6. KissMyShinyMetalAss
כתוב כיתה בשם KissMyShinyMetalAss. צור אובייקט של מחלקה זו, ואז הצג אותו למסך.
7 7. שם שלושה משתנים סטטיים
כתוב 3 משתנים סטטיים ציבוריים: String Solution.name , String Cat.name , String Dog.name
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION