Я только начинаю писать программы на Java. Что означает следующий код Java?
public static void main(String[] args)
Что такое
String[] args
?Когда бы вы использовали это
args
?
Исходный код и / или примеры предпочтительнее абстрактных пояснений
Я только начинаю писать программы на Java. Что означает следующий код Java?
public static void main(String[] args)
Что такое String[] args
?
Когда бы вы использовали это args
?
Исходный код и / или примеры предпочтительнее абстрактных пояснений
Ответы:
В Java args
содержатся предоставленные аргументы командной строки в виде массива String
объектов.
Другими словами, если вы запустите вашу программу, как java MyProgram one two
тогда args
будет содержать ["one", "two"]
.
Если вы хотите вывести содержимое args
, вы можете просто просмотреть их, как это ...
public class ArgumentExample {
public static void main(String[] args) {
for(int i = 0; i < args.length; i++) {
System.out.println(args[i]);
}
}
}
args
гарантированно разделяется пробелом независимо от ОС?
-version
к примеру, это java -version
и java.exe -version
, но нет java.exe /version
(пытается загрузить основной класс .version
). Просто мои 2 цента, если кто-нибудь когда-нибудь на это наткнется.
Это для аргументов командной строки в Java.
Другими словами, если вы запустите
MyProgram Java один два
Затем args
содержит:
[ "один два" ]
public static void main(String [] args) {
String one = args[0]; //=="one"
String two = args[1]; //=="two"
}
Причина этого заключается в том, чтобы настроить приложение для работы определенным образом или предоставить ему некоторую информацию, которая ему нужна.
Если вы новичок в Java, я настоятельно рекомендую читать через официальный Oracle, Java TM учебники .
args
содержит аргументы командной строки, передаваемые программе Java при вызове. Например, если я вызову программу так:
$ java MyProg -f file.txt
Тогда args
будет массив, содержащий строки "-f"
и "file.txt"
.
javac MyProg.java
а затем запустить java MyProg -f file.txt
. Есть ли причина для этого, потому что нигде в ответах это не упоминается?
.class
файл.
Следующий ответ основан на моем понимании и некотором тесте.
Что такое String [] args?
Ans->
String [] -> Как мы знаем, это простой массив String.
args -> это имя массива, это может быть что угодно (например, a, ar, аргумент, параметр, параметр), нет проблем с компилятором и выполнено, и я также проверил.
Например,
1) public static void main (аргумент String [])
2) открытый статический void main (параметр String [])
Когда бы вы использовали эти аргументы?
Ans->
Основная функция разработана очень разумно разработчиками. Фактическое мышление очень глубоко. Который в основном разрабатывается на основе C & C ++ на основе аргумента командной строки, но в настоящее время никто не использует его больше.
Вещи 1 - Пользователь может ввести любой тип данных из командной строки, может быть Number или String, и это необходимо для того, чтобы компилятор принял их, какой тип данных нам следует использовать? увидеть вещь 2
Thing 2 - String - это тип данных, который поддерживает все примитивные типы данных, такие как int, long, float, double, byte, shot, char в Java. Вы можете легко разобрать его в любом примитивном типе данных.
Например, следующая программа скомпилирована и выполнена, и я также протестировал.
Если ввод -> 1 1
// one class needs to have a main() method
public class HelloWorld
{
// arguments are passed using the text field below this editor
public static void main(String[] parameter)
{
System.out.println(parameter[0] + parameter[1]); // Output is 11
//Comment out below code in case of String
System.out.println(Integer.parseInt(parameter[0]) + Integer.parseInt(parameter[1])); //Output is 2
System.out.println(Float.parseFloat(parameter[0]) + Float.parseFloat(parameter[1])); //Output is 2.0
System.out.println(Long.parseLong(parameter[0]) + Long.parseLong(parameter[1])); //Output is 2
System.out.println(Double.parseDouble(parameter[0]) + Double.parseDouble(parameter[1])); //Output is 2.0
}
}
Даже если OP только говорит о String[] args
, я хочу привести полный пример public static void main(String[] args)
.
Public
: модификатор доступа , который определяет, кто может получить доступ к этому методу. Открытый означает, что этот метод будет доступен любому классу (если другие классы могут получить доступ к этому классу.).
Static
: ключевое слово, которое идентифицирует предмет, связанный с классом. Это означает, что данный метод или переменная не связаны с экземпляром, а связаны с классом. Доступ к нему можно получить без создания экземпляра класса.
Void
: используется для определения типа возврата метода. Он определяет, что метод может вернуть. Void означает, что метод не будет возвращать никакого значения.
main
: это имя метода. Это имя метода ищется JVM как отправная точка для приложения только с определенной подписью.
String[] args
: параметр основного метода.
Если вы посмотрите на исходный код JDK (jdk-src \ j2se \ src \ share \ bin \ java.c):
/* Get the application's main method */
mainID = (*env)->GetStaticMethodID(env, mainClass, "main",
"([Ljava/lang/String;)V");
...
{ /* Make sure the main method is public */
...
mods = (*env)->CallIntMethod(env, obj, mid);
if ((mods & 1) == 0) { /* if (!Modifier.isPublic(mods)) ... */
message = "Main method not public.";
messageDest = JNI_TRUE;
goto leave;
...
Вы можете видеть, что метод запуска в Java должен быть назван main
и должен иметь конкретную подписьpublic static void main(String[] args)
Код также говорит нам, что public static void main(String[] args)
это не исправлено, если вы измените код в (jdk-src \ j2se \ src \ share \ bin \ java.c) на другую подпись, это будет работать, но изменение этого даст вам другие возможные проблемы из-за спецификаций Java
Оффтоп: прошло уже 7 лет с тех пор, как ОП задал этот вопрос, я думаю, что ОП уже может ответить на его собственный вопрос.
String [] args
это также, как вы объявляете массив строк в Java.
В этой сигнатуре метода массив args
будет заполнен значениями при вызове метода (как показывают другие примеры). Поскольку вы учитесь, стоит понимать, что этот args
массив такой же, как если бы вы создали его самостоятельно в методе, как в этом:
public void foo() {
String [] args = new String[2];
args[0] = "hello";
args[1] = "every";
System.out.println("Output: " + args[0] + args[1]);
// etc... the usage of 'args' here and in the main method is identical
}
Я бы расстался
public static void main(String args[])
по частям.
«public» означает, что main () может быть вызван из любого места.
«static» означает, что main () не принадлежит конкретному объекту
«void» означает, что main () не возвращает значения
«main» - это имя функции. main () является особенным, потому что это начало программы.
«Строка []» означает массив строк.
«args» - это имя String [] (в теле main ()). «args» не является особенным; Вы можете назвать это как-нибудь еще, и программа будет работать так же.
String[] args
представляет собой набор строк, разделенных пробелом, который может быть введен в программу на терминале. В большинстве случаев новичок не собирается использовать эту переменную, но она всегда есть на всякий случай.Когда вы закончите свой код, вы превратите его в файл с расширением .java, который можно запустить, дважды щелкнув по нему, но также по всей консоли (терминал на Mac, cmd.exe на окнах), который позволяет пользователю делать много вещей. Одна вещь - они могут видеть консольные сообщения (System.out.print или System.out.println), которые они не могут видеть, если они дважды щелкают. Еще одна вещь, которую они могут сделать, это указать параметры, поэтому обычно вы используете строку
java -jar MyCode.jar
после перехода в папку программы с
cd C:My/Code/Location
на окнах или
cd My/Code/Location
на Mac (обратите внимание, что Mac менее громоздкий) для запуска кода, но для указания параметров, которые вы бы использовали
java -jar MyCode.jar parameter1 parameter2
Эти параметры хранятся в массиве args, который вы можете использовать в своей программе, если вы хотите, чтобы пользователь мог контролировать специальные параметры, такие как используемый файл или объем памяти, который может иметь программа. Если вы хотите знать, как использовать массив, вы можете найти тему на этом сайте или просто погуглить. Обратите внимание, что можно использовать любое количество параметров.
Объяснение на простом непрофессиональном языке.
Основной метод ожидает от нас предоставления некоторых аргументов, когда мы направляем нашу JVM на имя класса. Это означает, что ваш файл называется Try.java, теперь для его выполнения в командной строке вы пишете «javac Try.java» для компиляции, а затем «java Try» для выполнения. Теперь предположим, что вместо написания просто «java Try» вы пишете «java Try 1». Здесь вы передали аргумент "1". Это будет принято вашим основным методом, даже если вы не используете его в своем коде.
Если вы хотите проверить, принял ли ваш метод main аргумент «1» или нет. Просто, внутри вашего основного метода введите следующее:
for(int i = 0; i < args.length; i++) {
System.out.println("Argument is: "+args[i]);
}
Я думаю, что это довольно хорошо охвачено ответами выше, String args[]
это просто массив строковых аргументов, которые вы можете передать своему приложению при запуске. В завершение я мог бы добавить, что также допустимо определять параметр метода, передаваемый main
методу, в качестве аргумента переменной (varargs) типа String:
public static void main (String... args)
Другими словами, main
метод должен принимать либо String array ( String args[]
), либо varargs ( String... args
) в качестве аргумента метода. И нет никакого волшебства с именем args
тоже. Вы также можете написать arguments
или даже freddiefujiwara
как показано ниже, например:
public static void main (String[] arguments)
public static void main (String[] freddiefujiwara)
Когда класс java выполняется из консоли, вызывается метод main. Чтобы это произошло, определение этого основного метода должно быть
public static void main(String [])
Тот факт, что этот массив строк называется args, является стандартным соглашением, но не является строго обязательным. Вы должны заполнить этот массив в командной строке, когда вы вызываете вашу программу
java MyClass a b c
Они обычно используются для определения параметров вашей программы, например, файлов для записи или чтения.
в public static void main (String args []) args - это массив аргументов консольной строки, тип данных которых - String. в этом массиве вы можете хранить различные строковые аргументы, вызывая их в командной строке, как показано ниже: java myProgram Shaan Royal, затем Shaan и Royal будут сохранены в массиве как arg [0] = "Shaan"; Arg [1] = "Royal"; Вы можете сделать это вручную также внутри программы, когда вы не вызываете их в командной строке.
String[] args
Параметр представляет собой массив строк , передаваемых в качестве параметров при запуске приложения с помощью командной строки в ОС.
Итак, представьте, что вы скомпилировали и упаковали myApp.jar
приложение Java. Конечно, вы можете запустить свое приложение, дважды щелкнув его в ОС, но вы также можете запустить его с помощью командной строки, например (в Linux, например):
user@computer:~$ java -jar myApp.jar
Когда вы вызываете ваше приложение, передавая некоторые параметры, такие как:
user@computer:~$ java -jar myApp.jar update notify
Команда java -jar
передаст ваши строки update
и notify
ваш public static void main()
метод.
Затем вы можете сделать что-то вроде:
System.out.println(args[0]); //Which will print 'update'
System.out.println(args[1]); //Which will print 'notify'
В дополнение ко всем предыдущим комментариям.
public static void main(String[] args)
можно записать как
public static void main(String...arg)
или
public static void main(String...strings)
args
это не обязательно должно быть названоargs
(вы можете назвать его как угодно) - хотя лучше следовать соглашению. Вы также можетеString... args
время от времени видеть , что эквивалентно.