Завершение программы 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
без каких-либо переменных или значений)?
Ответы
Ответ 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() полностью завершит вашу программу и закроет любое открытое окно.