Точка входа для приложений Java: main (), init () или run ()?

До сих пор я использовал public void run() {} методы public void run() {} для выполнения моего кода на Java. Когда / почему можно использовать main() или init() вместо run() ?

Это особый вопрос, потому что это не должно быть вопросом выбора.

Когда вы запускаете JVM, вы указываете class для запуска, и он является main() этого classа, в котором запускается ваша программа.

По init() , я предполагаю, что вы имеете в виду метод JApplet. Когда в браузере запускается апплет, метод init() указанного апплета выполняется как первый порядок ведения бизнеса.

По run() , я предполагаю, что вы имеете в виду метод Runnable. Это метод, вызываемый при запуске нового streamа.

  • main: начало программы
  • init: запуск апплета
  • run: начало streamа

Если Eclipse запускает ваш метод run() хотя у вас нет main() , он делает что-то своеобразное и нестандартное, но не неосуществимо. Возможно, вам следует опубликовать образец classа, который вы использовали таким образом.

main метод – это точка входа приложения Java.

В частности, когда Java Virtual Machine предлагается запустить приложение, указав его class (используя приложение запуска java ), он будет искать main метод с сигнатурой public static void main(String[]) .

На странице команды java от Sun:

Инструмент java запускает приложение Java. Он делает это, запустив среду выполнения Java, загружая указанный class и вызывая основной метод этого classа.

Метод должен быть объявлен открытым и статическим, он не должен возвращать какое-либо значение и должен принимать массив String в качестве параметра. Объявление метода должно выглядеть следующим образом:

 public static void main(String args[]) 

Дополнительные ресурсы о том, как выполняется приложение Java, см. В следующих источниках:

  1. Глава 12: Выполнение спецификации языка Java, третье издание .
  2. Глава 5: Связывание, загрузка, инициализация из спецификации виртуальной машины Java, второе издание .
  3. Более внимательный взгляд на приложение «Hello World» из учебных пособий Java .

Метод run – это точка входа для нового Thread или classа, реализующего интерфейс Runnable . Он не вызывается Java Virutal Machine, когда он запускается командой java .

Поскольку сам Runnable или Runnable не может быть запущен непосредственно виртуальной машиной Java, он должен быть вызван методом Thread.start() . Это может быть выполнено путем создания экземпляра Thread и вызова его метода start в main методе приложения:

 public class MyRunnable implements Runnable { public void run() { System.out.println("Hello World!"); } public static void main(String[] args) { new Thread(new MyRunnable()).start(); } } 

Дополнительные сведения и пример запуска подclassа Thread или classа, реализующего Runnable , см. В разделе Определение и запуск streamа из учебников Java.


Метод init – это первый метод, называемый апплет или JApplet .

Когда апплет загружается плагином Java браузера или апплетами, он сначала Applet.init метод Applet.init . Любые инициализации, необходимые для использования апплета, должны выполняться здесь. После завершения метода init вызывается метод start .

Дополнительные сведения о том, когда вызывается метод init апплета, читайте о жизненном цикле апплета в « Жизненном цикле апплета» из учебных пособий Java.

См. Также: Как сделать апплеты из учебника Java.

Java имеет специальный статический метод:

 public static void main(String[] args) { ... } 

который выполняется в classе, когда class запускается с помощью командной строки java:

 $ java Class 

выполнит указанный метод в classе «Класс», если он существует.

 public void run() { ... } 

требуется интерфейсом Runnable или унаследован от classа Thread при создании новых streamов.

Метод main() является точкой входа для приложения Java. run() обычно используется для новых streamов или задач.

Где вы пишете метод run() , какое приложение вы пишете (например, Swing, AWT, консоль и т. Д.) И какова ваша среда разработки?

как новичок, я импортирую пакеты acm, и в этом пакете run () начинает выполнение streamа, init () инициализирует Java-апплет.

  • Как проверить доступное пространство на устройстве Android? на SD-карте?
  • Android getIntent (). GetExtras () возвращает null
  • warning: путь к bootstrap, не установленный вместе с -source 1.5
  • массив байтов к массиву Int
  • Показать Анимированный GIF
  • Время соединения истекло. Зачем?
  • Лучший способ реализовать View.OnClickListener в android
  • Как разбирать массив JSON с помощью Gson
  • TimerTask vs Thread.sleep vs Handler postDelayed - наиболее точная функция вызова каждые N миллисекундов?
  • Почему люди так боятся использовать clone () (на коллекции и classы JDK)?
  • в чем разница между i ++ и ++ i in for loop (Java)?
  • Давайте будем гением компьютера.