הקדמה
שפת התכנות Java שואפת להציע למתכנתים נקודת כניסה יעילה לתכנות בעזרת השיטה המסוימת בה נקראת main
. בדרך כלל, השיטה main
היא השיטה הראשונה שנלמדת בעת התחלת לתכנת בשפת Java, מאחר שהיא הנקודה המרכזית להרצת תוכנית בשפה זו. השיטה main
יכולה לכלול קוד לביצוע או לקרוא לשיטות אחרות, וניתן להכניס אותה לכל כיתה שהיא חלק מתכנית. תכניות מורכבות יותר נוטות לכלול כיתה שמכילה את השיטה main
בלבד. בדרך כלל, הכיתה שמכילה את השיטה main
יכולה לקבל כל שם, אך בדרך כלל נקראת Main
.
בדוגמאות שיבואו, הכיתה שמכילה את השיטה main
תקרא Test
:
public class Test {
public static void main(String[] args){
System.out.println("Hello, World!");
}
}
במאמר זה תלמד על פרטי כל רכיב בשיטה main
.
תחביר שיטת Main ב-Java
תחביר השיטה main
תמיד הוא:
public static void main(String[] args){
// קוד כלשהו
}
ניתן לשנות רק את שם הארגומנט של מערך המחרוזות (String
). לדוגמא, ניתן לשנות את args
ל-myStringArgs
. הארגומנט מסוג מערך המחרוזות (String
) יכול להופיע גם כ-String... args
או כ-String args[]
.
ציבורי
מודיפייר הגישה של השיטה main
צריך להיות ציבורי
כך שה-JRE יוכל לגשת ולבצע את השיטה הזו. אם שיטה אינה ציבורית, אז הגישה מוגבלת. בדוגמה הבאה של קוד, השיטה main
מחסרת את מודיפייר הגישה ציבורי
:
public class Test {
static void main(String[] args){
System.out.println("Hello, World!");
}
}
כאשר אתה מכין ומריץ את התוכנית, השגיאה הבאה מתרחשת משום שהשיטה main
אינה ציבורית וה-JRE אינו יכול למצוא אותה:
- javac Test.java
- java Test
OutputError: Main method not found in class Test, please define the `main` method as:
public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application
סטטי
כאשר התוכנית ב-Java מתחילה, אין אובייקט של המחלקה קיים. השיטה main
חייבת להיות סטטית
כך שה-JVM יכול לטעון את המחלקה לזכרון ולקרוא לשיטת ה-main
בלי ליצור אינסטנס של המחלקה תחילה. בדוגמה הבאה של קוד, השיטה main
מחסרת את מודיפייר הסטטית:
public class Test {
public void main(String[] args){
System.out.println("Hello, World!");
}
}
כאשר אתה מכין ומריץ את התוכנית, השגיאה הבאה מתרחשת משום שהשיטה main
אינה סטטית
:
- javac Test.java
- java Test
OutputError: Main method is not static in class Test, please define the `main` method as:
public static void main(String[] args)
וויד
כל שיטת Java חייבת לספק את סוג ההחזרה. סוג ההחזרה של שיטת ה-main
ב-Java הוא void
מכיוון שהיא אינה מחזירה דבר. כאשר שיטת ה-main
מסתיימת בביצוע, התוכנית ב-Java נסגרת, לכן אין צורך באובייקט המוחזר. בדוגמה הבאה לקוד, שיטת ה-main
מנסה להחזיר משהו על אף שסוג ההחזרה הוא void
:
public class Test {
public static void main(String[] args){
return 0;
}
}
כאשר אתה מכין את התוכנית, מתרחשת השגיאה הבאה מכיוון ש-Java אינה מצפה לערך המוחזר כאשר סוג ההחזרה הוא void
:
- javac Test.java
OutputTest.java:5: error: incompatible types: unexpected return value
return 0;
^
1 error
main
שיטת ה-main
ב-Java תמיד מותקנת main
. כאשר תוכנית Java מתחילה, היא תמיד מחפשת את שיטת ה-main
. הדוגמה הבאה לקוד מראה שיטת main
ששונתה לשם myMain
:
public class Test {
public static void myMain(String[] args){
System.out.println("Hello, World!");
}
}
כאשר אתה מכין ומריץ את התוכנית, מתרחשת השגיאה הבאה מכיוון ש-JRE אינה יכולה למצוא את שיטת ה-main
במחלקה:
- javac Test.java
- java Test
OutputError: Main method not found in class Test, please define the `main` method as:
public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application
String[] args
השיטה main ב-Java מקבלת ארגומנט יחיד מסוג מערך של String. כל מחרוזת במערך היא ארגומנט משורת הפקודה. ניתן להשתמש בארגומנטים משורת הפקודה כדי לשפר את פעולת התוכנית, או להעביר מידע לתוכנית בזמן ריצה. הדוגמה הבאה מציגה קוד שמדפיס את ארגומנטי שורת הפקודה שאתה מזין כאשר אתה מפעיל את התוכנית:
public class Test {
public static void main(String[] args){
for(String s : args){
System.out.println(s);
}
}
}
כאשר אתה מקמפל את התוכנית ואז מפעיל אותה עם מספר ארגומנטים משורת הפקודה מופרדים בין עצמם ברווחים, הארגומנטים מודפסים בטרמינל:
- javac Test.java
- java Test 1 2 3 "Testing the main method"
Output1
2
3
Testing the main method
סיכום
במאמר זה למדת על כל רכיב בשיטת main של Java. המשך את הלמידה שלך עם עוד מדריכי Java.