Подтвердить что ты не робот

Завершение программы Java

Я узнал, как закончить (выключить или остановить) мои Java-программы. Я нашел для него два решения.

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

  • используя System.exit(); Иногда я использовал его. Я прочитал о Sytem.exit() из Этот вопрос.

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

public class Testing {

public static void main(String... str) {
    System.out.println(1);
    System.exit(0);
    System.out.println(2);
    return;
 }
}

Я уверен, что 2 не появится. Я хотел бы знать, почему return; или другие коды могут писать ниже утверждение System.exit(0); и что было реальным определением для return; (потому что для меня это странно для меня return без каких-либо переменных или значений)?

4b9b3361

Ответ 1

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

Оператор

return просто отменяет выполнение текущего метода. Это буквально означает возврат элемента управления вызывающему методу. Если метод объявлен как void (как в вашем примере), вам не нужно указывать значение, так как вам нужно вернуть void. Если метод объявлен для возврата определенного типа, тогда вы должны указать возвращаемое значение - и это значение должно быть указанного типа.

return приведет к выходу программы только в том случае, если она находится внутри метода main основного класса. Если вы попытаетесь поместить код после него, компилятор будет жаловаться на недостижимый код, например:

public static void main(String... str) {
    System.out.println(1);
    return;
    System.out.println(2);
    System.exit(0);
}

не будет компилироваться с большинством компиляторов, создавая ошибку unreachable code, указывающую на второй вызов System.out.println.

Ответ 2

Потому что System.exit() - это еще один метод для компилятора. Он не читает заранее и не выясняет, что вся программа завершится в этот момент (JVM завершает работу). Ваша ОС или оболочка могут читать целое число, которое передается обратно в методе System.exit(). Стандартно для 0 означает "завершение программы, и все прошло нормально" и любое другое значение для уведомления об ошибке. Разработчик должен документировать эти возвращаемые значения для любых пользователей.

return С другой стороны, это зарезервированное ключевое слово, которое компилятор хорошо знает. return возвращает значение и завершает текущий запуск функции, перемещая резервную копию стека к функции, которая его вызывала (если таковая имеется). В приведенном выше коде возвращается void, поскольку вы не предоставили ничего для возврата.

Ответ 3

System.exit() завершает работу JVM. Ничего не происходит после выполнения System.exit(). Возврат обычно используется для выхода из метода. Если тип возврата недействителен, вы можете использовать return; Но я не думаю, что это хорошая практика сделать это в основном методе. Вам не нужно ничего делать для завершения программы, если не будет бесконечный цикл или какое-то странное другое выполнение.

Ответ 4

  • System.exit() - это функция, которая приводит к выходу JVM.
  • return просто возвращает элемент управления вызывающей функции.
  • return 8 вернет управление и значение 8 в вызывающую функцию.

Ответ 5

Что возвращает; означает?

return; действительно означает, что он ничего не возвращает void. Это.

зачем возвращаться; или другие коды могут писать ниже инструкции System.exit(0);

Допустимо, поскольку компилятор не знает, что вызов System.exit(0) завершит JVM. Компилятор просто даст предупреждение - ненужный оператор возврата

Ответ 6

  • Ну, сначала System.exit(0) используется для завершения работы программы и наличия нижеприведенных инструкций, хотя компилятор не бросает никаких ошибок.
  • простой метод return; используется в методе возвращаемого типа void, чтобы вернуть управление исполнением его родительскому методу.

Ответ 7

So return; на самом деле не заканчивает вашу java-программу, , она только завершает вашу java-функцию (void). Потому что в вашем случае функция является основной функцией вашего приложения, return; также прекратит применение. Но возвращение; в вашем примере бесполезно, потому что функция будет прекращаться сразу после этого возврата в любом случае...

System.exit() полностью завершит вашу программу и закроет любое открытое окно.