main () هي نقطة البداية لـ JVM لبدء تنفيذ برنامج Java. بدون الطريقة main()، لن يقوم JVM بتنفيذ البرنامج. بناء جملة الطريقة الرئيسية () هو:
عام: إنه محدد الوصول. يجب أن نستخدم كلمة أساسية عامة قبل الطريقة main() حتى يتمكن JVM من تحديد نقطة تنفيذ البرنامج. إذا استخدمنا طريقة خاصة ومحمية وافتراضية قبل الطريقة main()، فلن تكون مرئية لـ JVM.
ثابتة: يمكنك جعل الطريقة ثابتة باستخدام الكلمة الأساسية الثابتة. يجب علينا استدعاء الطريقة الرئيسية () دون إنشاء كائن. الأساليب الثابتة هي الطريقة التي تستدعي دون إنشاء الكائنات، لذلك لا نحتاج إلى أي كائن لاستدعاء الطريقة الرئيسية ().
فارغ: في Java، كل أسلوب له نوع الإرجاع. تعترف الكلمة الأساسية Void للمترجم بأن الطريقة main() لا تُرجع أي قيمة.
رئيسي(): إنه توقيع افتراضي تم تعريفه مسبقًا في JVM. يتم استدعاؤه بواسطة JVM لتنفيذ سطر برنامج سطرًا وإنهاء التنفيذ بعد الانتهاء من هذه الطريقة. يمكننا أيضًا تحميل الطريقة الرئيسية () بشكل زائد.
وسيطات السلسلة []: تقبل الطريقة main() أيضًا بعض البيانات من المستخدم. يقبل مجموعة من السلاسل، والتي تسمى مصفوفة السلسلة. يتم استخدامه للاحتفاظ بوسائط سطر الأوامر في شكل قيم سلسلة.
main(String args[])
هنا، agrs[] هو اسم المصفوفة، وهو من النوع String. وهذا يعني أنه يمكن تخزين مجموعة من السلسلة. تذكر أن هذه المصفوفة يمكنها أيضًا تخزين مجموعة من الأرقام ولكن في شكل سلسلة فقط. تسمى القيم التي تم تمريرها إلى الطريقة الرئيسية () بالوسائط. يتم تخزين هذه الوسائط في مصفوفة args[]، لذلك يتم استخدام الاسم args[] لها بشكل عام.
ماذا يحدث إذا تمت كتابة الطريقة الرئيسية () بدون String args[]؟
سيتم تجميع البرنامج، ولكن لن يتم تشغيله، لأن JVM لن يتعرف على الطريقة الرئيسية (). تذكر أن JVM يبحث دائمًا عن الطريقة الرئيسية () بمصفوفة من نوع السلسلة كمعلمة.
عملية التنفيذ
أولاً، يقوم JVM بتنفيذ الكتلة الثابتة، ثم ينفذ الطرق الثابتة، ثم يقوم بإنشاء الكائن الذي يحتاجه البرنامج. وأخيرا، فإنه ينفذ أساليب المثيل. ينفذ JVM كتلة ثابتة على أساس الأولوية القصوى. هذا يعني أن JVM ينتقل أولاً إلى الكتلة الثابتة حتى قبل أن يبحث عن الطريقة الرئيسية () في البرنامج.
مثال
class Demo { static //static block { System.out.println('Static block'); } public static void main(String args[]) //static method { System.out.println('Static method'); } }
انتاج:
Static block Static method
نلاحظ أن JVM يقوم أولاً بتنفيذ الكتلة الثابتة، إذا كانت موجودة في البرنامج. بعد ذلك يبحث عن الطريقة الرئيسية (). إذا لم يتم العثور على الأسلوب main()، فإنه يعطي خطأ.
مثال
البرنامج الذي لا يحتوي على الطريقة main() يعطي خطأ في وقت التشغيل.
class DemoStaticBlock { Static //static block { System.out.println('Static block'); } }
انتاج:
Error: Main method not found in the class Demo, please define the main method as: public static void main(String[] args) or a JavaFX application class must extend javafx.application.Application
لذلك يجب دائمًا كتابة الطريقة الرئيسية () على النحو التالي:
public static void main(String args[])
يمكننا تبادل العام والثابت وكتابته على النحو التالي:
static public void main(String args[])
يمكننا أيضًا استخدام اسم مختلف لمصفوفة نوع السلسلة وكتابته على النحو التالي:
static public void main(String[] x)
الطرق المختلفة لكتابة الطريقة الرئيسية () هي:
static public void main(String []x) static public void main(String...args)
سلسلة...الوسائط: يسمح للطريقة بقبول وسيطات صفرية أو متعددة. يجب أن يكون هناك ثلاث نقاط بالضبط بين السلسلة والمصفوفة؛ وإلا فإنه يعطي خطأ.
مثال
برنامج لا يحتوي على طريقة main()، ولكن يتم تجميعه وتشغيله بنجاح.
abstract class DemoNoMain extends javafx.application.Application { static //static block { System.out.println('Java'); System.exit(0); } }
انتاج:
Java
التحميل الزائد للطريقة الرئيسية ().
يمكننا أيضًا تحميل الطريقة الرئيسية () بشكل زائد. يمكننا تحديد أي عدد من الطرق الرئيسية () في الفصل، ولكن يجب أن يكون توقيع الطريقة مختلفًا.
مثال
class OverloadMain { public static void main(int a) //overloaded main method { System.out.println(a); } public static void main(String args[]) { System.out.println('main method incoked'); main(6); } }
انتاج:
قائمة الانتظار وقائمة الانتظار ذات الأولوية في جافا
main method invoked 6