المقدمة
طريقة الـ \code{main} في جافا عادةً ما تكون أول طريقة تتعلم عندما تبدأ في البرمجة بلغة جافا لأنها نقطة البداية لتنفيذ برنامج جافا. يمكن أن تحتوي طريقة \code{main} على كود للتنفيذ أو استدعاء طرق أخرى، ويمكن وضعها في أي صنف يكون جزءًا من البرنامج. البرامج الأكثر تعقيدًا عادةً ما تحتوي على صنف يحتوي فقط على طريقة \code{main}. يمكن أن يحمل الصنف الذي يحتوي على طريقة \code{main} أي اسم، على الرغم من أنه يمكنك ببساطة استدعاء الصنف \code{Main}.
في الأمثلة التالية، يُطلق على الصنف الذي يحتوي على طريقة \code{main} اسم \code{Test}:
public class Test {
public static void main(String[] args){
System.out.println("Hello, World!");
}
}
في هذه المقالة، ستتعلم ماذا يعني كل جزء من طريقة \code{main}.
صيغة طريقة \code{main} في جافا
صيغة طريقة \code{main} دائما ما تكون كالتالي:
public static void main(String[] args){
// بعض الكود
}
يمكنك تغيير اسم الوسيطة المصفوفة من النوع \code{String}. على سبيل المثال، يمكنك تغيير \code{args} إلى \code{myStringArgs}. يمكن كتابة الوسيطة المصفوفة من النوع \code{String} كـ \code{String… args} أو \code{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 يجب أن يوفر نوع العودة. نوع عودة الأسلوب الرئيسي في 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
في جافا تقبل وسيطة واحدة من نوع مصفوفة 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
في جافا. واصل تعلمك مع المزيد من دروس جافا.