основная функция ничего не возвращает. Почему? [дубликат]

Этот вопрос уже имеет ответ здесь:

Относительно основного C/C++ () должен всегда возвращать целое число (нуль для указания на успех и ненулевой для указания на отказ). Я могу понять это, поскольку программа запущена, это становится процессом, и каждый процесс должен иметь статус выхода, который мы получаем путем выполнения $ эха? от оболочки после того, как процесс преобладает.

Теперь я не понимаю, почему основной метод, ничего не возвращает в Java? Это заставило что-нибудь делать с тем, что программа запущена на JVM, и процесс JVM является reposnsible для возврата статуса выхода?

Разъяснитесь.

Спасибо,
Roger

12
задан gameover 15 January 2010 в 10:59
поделиться

7 ответов

Если основной метод однопоточного java-приложения завершается, то приложение завершается кодом выхода 0. Если вам нужен другой код выхода, возможно, для указания ошибки, вы можете поместить

System.exit(yourNumberHere);

в любое место в коде (особенно за пределами основного метода).

Это отличается для многопоточных приложений , где для остановки JVM необходимо либо использовать System.exit изнутри kill -9 снаружи.

Вот краткий пример, где завершение main не останавливает приложение (типичное поведение сервиса или демона):

public static void main(String args[]) {  
  Thread iWillSurvive = new Thread(new Runnable() {
    public void run() {
      while(true) {
        // heat the CPU
      }
    }
  });
  iWillSurvive.start();
}

Замечание: Конечно, поток будет завершаться, когда завершается метод выполнения (или основной метод в случае основного потока). И в этом случае, когда все потоки завершат свою работу, JVM завершится с кодом выхода 0 (что возвращает нас к начальному вопросу). Надеюсь, теперь все довольны.

14
ответ дан 2 December 2019 в 03:28
поделиться

Вы можете просто написать Report.SetDatabaselogon («Имя пользователя», «PWD», @ «Сервер», «База данных»); Дайте в систему для входа в систему, затем окно входа в систему базы данных не появится при запуске кода.

-121--5045978-

Java имеет System.exit (int) для этой цели.

В основном, программа Java выйдет с кодом выхода 0, если поток программного потока достигает конца основного метода (примерно; он получает времен с качанием и резьбой, но это должно быть достаточно).

Если вы придерживаетесь вызова в System.exit () где-то (в любом месте, на самом деле) или или Runtime.GetRuntime (). Выход () , который является системой . Выход () вызовы, затем программа заканчивается немедленно и преждевременно.

Вы можете изобразить его, как Java, неявно добавляет System.exit (0) в самом конце основного метода, но могут быть более тонкие различия. У меня нет полных деталей отключения JVM в моей голове прямо сейчас.

7
ответ дан 2 December 2019 в 03:28
поделиться

Незначительное нигли - в C ++, вам не нужно ничего вернуть от Main:

int main() {
}

- это совершенно законная программа C ++ - она ​​действует так, как если бы вы имели:

return 0;

как последний заявление в главном.

4
ответ дан 2 December 2019 в 03:28
поделиться

Подозреваю, что причина возврата int на Си/Си++ заключается в том, что это соглашение указывает на успешность/неудачу функции/метода/программы на этом языке.

С введением в Java исключений вместо нуля для успеха и ненулевых значений для неудачи, она использует иерархию исключений для неудач, а успех был просто тогда, когда не было брошено исключений, тем самым устраняя необходимость возврата значения.

0
ответ дан 2 December 2019 в 03:28
поделиться

Большинство программ, которые я пишу в наши дни, имеет некоторую форму пользовательского интерфейса и мало что они могут с пользой возвращаться, и даже реже, на скорее всего, что что-то все будет нуждаться в этом состоянии состояния.

Так зачем заставить все программы вернуть один? Как сказали другие, вы можете вернуть код состояния, если вы хотите ...

0
ответ дан 2 December 2019 в 03:28
поделиться

Возможно, это связано с тем, что System.exit(int exitCode) не возвращал значения.

0
ответ дан 2 December 2019 в 03:28
поделиться

, разработанный, когда многопотока была уже обычной, Java сказал (по дизайну) «До свидания» к идее, что когда «главная» возвращает программу. Вот почему нет возвращаемой стоимости. Поскольку другие сказали, что используйте System.exit , когда вы хотите выйти с Return Code.

17
ответ дан 2 December 2019 в 03:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: