Почему main () в java void?

В случае языков с синтаксисом типа C мы объявляем метод main () возвращать значение int или float (или void). Можно ли объявить не-void возвращаемый тип из main () в Java? Если нет, то почему? Означает ли это, что программа Java не возвращает никакого значения ОС?

4 Solutions collect form web for “Почему main () в java void?”

Метод main() действительно должен иметь тип возврата void . Из спецификации языка Java «Исполнение – запуск виртуальной машины» ( §12.1.4 ):

Основной метод должен быть объявлен public , static и void . Он должен принять единственный аргумент, который представляет собой массив строк.

Далее описывается, когда программа выходит из раздела «Исполнение – Выход программы» ( §12.8 ):

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

  • Все streamи, которые не являются streamами демона, завершаются.
  • Некоторые streamи вызывают метод exit classа Runtime или class System а операция выхода не запрещена менеджером безопасности.

Другими словами, программа может выйти до или после завершения main метода; поэтому возвращаемое значение из main будет бессмысленным. Если вы хотите, чтобы программа вернула код состояния, вызовите один из следующих способов (обратите внимание, что все три метода никогда не возвращаются нормально):

  • System.exit(int status) – эквивалент Runtime.getRuntime().exit(status)
  • Runtime.exit(int status)Runtime.exit(int status) работу текущей запущенной JVM, инициируя ее последовательность выключения (запустив все зарегистрированные завершающие крючки и неинвизированные финализаторы , если необходимо). Как только это будет сделано, JVM остановится.
  • Runtime.halt(int status) – принудительно завершает работу запущенной JVM.

Из трех, System.exit() является обычным и наиболее удобным способом для завершения JVM.

Это интересная дискуссия о velocityreviews по той же теме:

Блики:

Кстати, это считается плохим стилем на C и C ++ только потому, что это неправильная подпись для основного, а не для любой универсальной причины, не зависящей от языков программирования. Это одна из тех вещей, которые на самом деле не должны работать, но могут быть реализованы.

В Java причина main возвращает void – это streamи. C и C ++ были разработаны как языки до того, как multithreading стала широко известной методикой, и обе они позже приписали им на них. Java была разработана с самого начала, чтобы быть многопоточной средой, и, откровенно говоря, было бы необычно писать любое нетривиальное приложение Java, которое не использует больше одного streamа. Таким образом, идея о том, что программа движется линейно от начала до конца main, немного устарела.

написано

http://www.designacourse.com Самый простой способ обучить любого … везде. Крис Смит – ведущий разработчик программного обеспечения / технический тренер MindIQ Corporation

Причина, по которой main метод имеет тип void как возвращаемый тип, заключается в том, что после завершения main это не обязательно означает, что вся программа завершена. Если main порождает новые streamи, то эти streamи могут поддерживать работу программы. Возвратный тип main не имеет большого смысла в этой точке.

Например, это очень распространено в приложениях Swing, где main метод обычно запускает графический интерфейс в streamе Swing, а затем main заканчивается … но программа все еще работает.

Вы можете вернуть int с помощью System.exit ().

Возrotation ничего, кроме целого, не имеет большого смысла, поскольку ОС ожидает целое число. Если ничего не будет возвращено, значение по умолчанию равно 0, что означает «ОК». Другие значения обычно используются для сигнализации ошибок или особых условий.

  • Вычисление расстояния между двумя точками
  • Порядок инициализации и инстанцирования Java
  • Вызов внешней функции classа из внутреннего classа
  • Что такое IndexOutOfBoundsException? Как я могу это исправить?
  • Как установить выбранный элемент Spinner по значению, а не положением?
  • Выполнение динамического кода
  • Как объект будет вызывать метод toString неявно?
  • При создании службы нет пустого конструктора
  • В чем разница между @ + id / android: list и @ + id / list
  • Использование шаблона проектирования Singleton для SQLiteDatabase
  • Что такое хорошая библиотека для анализа математических выражений в java?
  • Interesting Posts
    Давайте будем гением компьютера.