Может ли основной метод в Java возвращать что-то?
Недавно я провел интервью, и они задали мне два вопроса в основной Java.
Q 1.
Можно ли написать класс java с помощью
public static int main(String[] args){
System.out.println("Hello");
Я ответил: Нет. Компилятор не будет компилировать его, так как ожидается, что тип возврата main
будет int
, хотя мы можем его перегрузить.
Q 2: Следующий вопрос, на который я не смог ответить.
Напишите программу, чтобы ваш метод Java main
мог что-то вернуть.
т.е. как вы можете сделать public static void main([] args)
, чтобы что-то вернуть?
Может ли кто-нибудь помочь мне ответить на этот вопрос?
Ответы
Ответ 1
Q 1. Можем ли мы написать класс java с: public static int main (String [] args) {
Да, вы можете, но не можете запустить этот класс Java.
Пример класса:
class MainTest {
public static int main(String[] args) {
return 1;
}
}
При попытке запустить это сообщение вы получите сообщение об ошибке:
Error: Main method must return a value of type void in class MainTest, please
define the main method as:
public static void main(String[] args)
Q 2: Следующий вопрос, на который я не могу ответить. Он попросил написать программу, чтобы что ваш основной метод java может что-то вернуть.
Вы можете использовать System # exit (int) для выхода из вашей программы с помощью специального кода выхода, который может быть интерпретирован операционной системой.
Ответ 2
Как правило, на языках, где main
возвращает int
(например, C и С++), код возврата main
становится кодом завершения процесса, который часто используется интерпретаторами команд и другими внешними программами для определения успешно ли этот процесс завершен. Чтобы добиться такого же эффекта в Java, используйте метод System.exit (аналогичный стандартной функции C exit):
public static void main(String[] args) {
System.exit(42);
}
Задание приведенной выше документации Java:
Завершает работу запущенной виртуальной машины Java. Аргумент служит в качестве кода состояния; по соглашению, ненулевой код состояния указывает на ненормальное завершение.
Ответ 3
Нельзя вернуть значение из основной функции Java. Однако программы могут возвращать код состояния.
Попробуйте выполнить следующее, чтобы выйти из состояния int в Java System.exit(45)
Ответ 4
Да, мы можем написать основной метод с возвращаемым типом, отличным от void. Это просто означает, что мы можем перегрузить наш основной метод. Некоторые примеры:
-
public static void main(String ... x){ }
-
public static int main(String []args){ }
-
public static void main(string array[]){ }
Но обратите внимание, что компилятор знает только
public static void main(String []args){ }
Если вышеуказанный метод отсутствует, он не будет компилироваться.
Ответ 5
Один из способов сделать это - изменить значения args [i] для i, меньшего чем args.length, внутри основного метода метода.
Пример:
public class Test{
//
public static void main(String[] args){
args[0] = "a value";
args[1] = "another value";
}
}
Из другого класса:
public class Other{
public static void main(String[] args){
String[] result={"",""};
Test.main(result);
System.out.println(result[0]);
System.out.println(result[1]);
}
}
Тогда выход:
значение
другое значение
Ответ 6
Да Вы можете вернуть тип void. Но значение будет передаваться в JVM, и после возврата не будет больше кода, потому что элемент управления вернется в JVM, который вызывает main()