logo

Java main() метод

Main() е началната точка за JVM да започне изпълнението на Java програма. Без метода main() JVM няма да изпълни програмата. Синтаксисът на метода main() е:

Основен метод на Java

публичен: Това е спецификатор на достъп. Трябва да използваме публична ключова дума преди метода main(), така че JVM да може да идентифицира точката на изпълнение на програмата. Ако използваме private, protected и default преди метода main(), той няма да бъде видим за JVM.

статичен: Можете да направите метод статичен, като използвате ключовата дума static. Трябва да извикаме метода main(), без да създаваме обект. Статичните методи са методът, който се извиква без създаване на обекти, така че не се нуждаем от обект, за да извикаме метода main().

празен: В Java всеки метод има връщащ тип. Ключовата дума Void потвърждава на компилатора, че методът main() не връща никаква стойност.

основен (): Това е подпис по подразбиране, който е предварително дефиниран в JVM. Извиква се от JVM, за да изпълни програма ред по ред и да прекрати изпълнението след завършване на този метод. Можем също да претоварим метода main().

Аргументи на низ []: Методът main() също приема някои данни от потребителя. Той приема група от низове, която се нарича масив от низове. Използва се за съхраняване на аргументите на командния ред под формата на низови стойности.

 main(String args[]) 

Тук agrs[] е името на масива и е от тип String. Това означава, че може да съхранява група низове. Не забравяйте, че този масив може също да съхранява група от числа, но само под формата на низ. Стойностите, предадени на метода main(), се наричат ​​аргументи. Тези аргументи се съхраняват в масив args[], така че името args[] обикновено се използва за него.

Какво се случва, ако методът main() е написан без String args[]?

Програмата ще се компилира, но няма да стартира, защото JVM няма да разпознае метода main(). Не забравяйте, че JVM винаги търси метода main() с масив от тип низ като параметър.

Процес на изпълнение

Първо JVM изпълнява статичния блок, след това изпълнява статични методи и след това създава обекта, необходим на програмата. И накрая, той изпълнява методите на екземпляра. JVM изпълнява статичен блок на базата на най-висок приоритет. Това означава, че JVM първо преминава към статичен блок дори преди да потърси метода main() в програмата.

Пример

 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() не бъде намерен, той дава грешка.

Пример

Програма, която няма метода 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 

Така че методът main() трябва винаги да се записва като:

 public static void main(String args[]) 

Можем да разменим public и static и да го напишем по следния начин:

 static public void main(String args[]) 

Можем също да използваме различното име за масива тип String и да го запишем като:

 static public void main(String[] x) 

Различните начини за писане на метод main() са:

 static public void main(String []x) static public void main(String...args) 

Низ...аргументи: Позволява на метода да приема нула или множество аргументи. Трябва да има точно три точки между String и array; в противен случай дава грешка.

Пример

Програма, която няма метод main(), но се компилира и работи успешно.

 abstract class DemoNoMain extends javafx.application.Application { static //static block { System.out.println('Java'); System.exit(0); } } 

Изход:

 Java 

Претоварване на метода main().

Можем също да претоварим метода main(). Можем да дефинираме произволен брой main() методи в класа, но сигнатурата на метода трябва да е различна.

Пример

 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); } } 

Изход:

java хвърля изключение
 main method invoked 6