Предисловие
Мы очень хорошо знакомы с основными функциями в Java. Я считаю, что каждый, кто изучил язык Java, могут умело писать функцию записи этой программы. Однако, почему основные функции написаны таким образом, что означает каждое ключевое слово? Возможно, не все могут легко ответить на это. Я также столкнулся с этой проблемой во время обучения. Поиск информации в Интернете и добавив свою собственную практику, я наконец -то получил некоторый опыт. Я не смею сохранять это и выписал это, чтобы поделиться этим со всеми.
Main () метод на Java
Виртуальная машина Java находит программу запущенной программы, которую необходимо запустить с помощью основного метода, и проверяет, загружается ли класс, где находится основная функция, загружается виртуальной машиной Java. Если он не загружен, загрузите класс и загрузите все связанные другие классы. Следовательно, когда программа работает, первым методом для выполнения является метод main() . Обычно, если вы хотите запустить метод класса, вы должны сначала создать создание объекта этого класса, а затем пройти « Имя объекта». Method name () «Но поскольку Main является точкой входа программы, объект не был создан в настоящее время, основной метод объявляется статичным, так что этот метод можно назвать непосредственно через имя класса. Method name () ".
Прежде чем посмотреть на Main () метод в Java, давайте сначала посмотрим на самое простое приложение Java Helloworld. Я буду использовать этот пример, чтобы проиллюстрировать тайну метода main() в классе Java. Код программы следующим образом:
/ *** Подробное объяснение метода main () в Java*/ public class helloworld {public static void main (string args []) {System.out.println ("Hello World!"); }}1. Сначала поговорим о категории:
В классе Helloworld есть метод main() , что означает, что это приложение Java, которое запускается и работает непосредственно через JVM.
Поскольку это класс, Java позволяет классам не подвергаться общедоступным ограничениям ключевых слов. Конечно, определение класса может быть ограничено только публичными или неограниченными ключевыми словами (по умолчанию).
2. Давайте поговорим о методе Main ()
Метод main() объявляется: public static void main(String args[]) . Это должно быть определено так, это спецификация Java.
Почему это определено так? Это как -то связано с операцией JVM.
Когда в классе есть метод main() , выполнение команды «Имя класса Java» запустит виртуальную машину для выполнения основного метода в классе.
Поскольку JVM сначала вызовет основной метод при запуске этого приложения Java. При вызове объект этого класса не создается, но называется непосредственно через имя класса, поэтому он должен быть ограничен общественным статиком.
Для основного метода в Java JVM имеет ограничения и не может иметь возвращаемого значения, поэтому тип возвратного значения является недействительным.
Существует также входной параметр в основном методе, который является Type String [], который также является спецификацией Java. Метод main() должен иметь параметр записи, а детали класса должны быть String[] . Что касается имени строкового массива, это может быть установлено самостоятельно. Согласно привычкам, название этого строкового массива, как правило, согласуется с именем параметра MIAN в примере спецификации Sun Java и называется ARGS.
Следовательно, определение метода main() должно быть: « public static void main(String 字符串数组参数名[]) ».
3. Метод Main () может сделать исключение
Следовательно, исключение может быть добавлено в методе main() , и исключение также может быть объявлено на методе main() .
Например, следующее является правильным:
public Class Testmain {public static void main (String [] args) бросает исключение {System.out.println ("Хахахахахахахахаха"); бросить новое исключение (""); }}Результат бега: Hahahahaha Exception in Thread "Main" java.lang.exception: at cangeStest.testmain.main (testmain.java:11) на sun.reflect.nativemethodaccessormpl.invoke0 (NativeMethodaccessper.Jplect.JativemethodaccessorMpl.invoke0 (Nativemethodacscesspor.Jplect. sun.reflect.delegatingmethodaccessorimpl.invoke (делегирование methodaccessorimpl.java:25) на java.lang.reflect.method.invoke (method.java:585) на com.intellij.rt.excution.application.appmain.main.
4. Функция массива параметров строки в методе main ()
В методе main() строковые параметры массивы параметров для получения входных параметров командной строки, а параметры командной строки разделены пространствами.
Вот пример, чтобы увидеть, как инициализировать и использовать этот массив.
/ *** Печать входных параметров в основном методе*/ public class testmain {public static void main (string args []) {System.out.println ("Печать входных параметров в основном методе!"); for (int i = 0; i <args.length; i ++) {System.out.println (args [i]); }}} Метод выполнения и результаты работы
D:/neam/basetest/src> Javac testmain.java d:/neam/basetest/src> Java testmain 1 2 3 Распечатайте входные параметры в основном методе! 1 2 3
5. Дайте другую версию Helloworld
/ *** Извращенная версия helloworld.hehe*/ public class helloworld2 {static {System.out.println ("Hello wordld!"); } public static void main (string args []) {System.Exit (0); }} Метод main() выполняет содержание предложения « System.exit(0); », с целью сделать программу нормально. Где "Helloworld!" Печать от? Секрет напечатан в статике, потому что содержимое статического блока кода будет вызвано до основного вызова.
VI Пример
Виртуальная машина начинается с вызова основного метода указанного класса, передавая его в основной параметр строкового массива, так что указанный класс загружается, связывая другие типы, используемые классом, и инициализируя их. Например, для программы:
public class helloapp {public static void main (string [] args) {System.out.println ("Hello World!"); for (int i = 0; i <args.length; i ++) {System.out.println (args); }}}После компиляции введите режим командной строки: Java HelloApp запустить виртуальную машину.
Виртуальная машина Java будет запущена с того, что вызовет MEANICE HelloApp Main и передат Main Array, содержащий три строки «запустить», «виртуальные» и «Машина». Теперь мы кратко опишем шаги, которые виртуальные машины могут предпринять при выполнении HelloApp.
Я начал пытаться выполнить основной метод класса HelloApp и обнаружил, что класс не был загружен, что означает, что виртуальная машина в настоящее время не содержит бинарного представителя класса. Таким образом, виртуальная машина использовала ClassLoader, чтобы попытаться найти такого двоичного представителя. Если этот процесс не удается, исключение брошено. После того, как класс загружен, до того, как основной метод будет вызван, класс HelloApp должен быть связан с другими типами и инициализирован. Ссылка состоит из трех этапов: осмотр, подготовка и анализ. Проверьте символы и семантику загруженного основного класса, подготовитесь к созданию статических доменов класса или интерфейса и инициализируйте эти домены до стандартных значений по умолчанию, а анализ отвечает за проверку символических ссылок основного класса на другие классы или интерфейсы. Это необязательно на этом шаге. Инициализация класса - это выполнение функции статической инициализации и конструктор инициализации статического домена, объявленного в классе. Родительский класс класса должен быть инициализирован, прежде чем он будет инициализирован.
Весь процесс заключается в следующем:
Суммировать
В качестве специальной спецификации основной метод сильно отличается от обычных методов и имеет много ограничений. Понимание его принципов требует изучения знаний, связанных с JVM. Это серьезное препятствие для обучения на Java. Выше приведено резюме принципа и использование основного, составленного редактором. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, вы можете оставить сообщение для общения.