Что такое "строковые аргументы []"? параметр в основном методе Java

java parameters command-line-arguments main

885478 просмотра

14 ответа

23954 Репутация автора

Я только начинаю писать программы на Java. Что означает следующий код Java?

public static void main(String[] args)
  • Что такое String[] args?

  • Когда бы вы использовали это args?

Исходный код и / или примеры предпочтительнее абстрактных пояснений

Автор: freddiefujiwara Источник Размещён: 21.05.2009 12:57

Ответы (14)


38 плюса

309488 Репутация автора

argsсодержит аргументы командной строки, передаваемые программе Java при вызове. Например, если я вызову программу так:

$ java MyProg -f file.txt

Тогда argsбудет массив, содержащий строки "-f"и "file.txt".

Автор: mipadi Размещён: 21.05.2009 01:01

283 плюса

69591 Репутация автора

В 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]);
        }
    }
}
Автор: Dan Lew Размещён: 21.05.2009 01:01

12 плюса

11094 Репутация автора

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
}
Автор: Cuga Размещён: 21.05.2009 01:16

6 плюса

17019 Репутация автора

Когда класс java выполняется из консоли, вызывается метод main. Чтобы это произошло, определение этого основного метода должно быть

public static void main(String [])

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

java MyClass a b c

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

Автор: shsteimer Размещён: 21.05.2009 01:18

107 плюса

6806 Репутация автора

Это для аргументов командной строки в Java.

Другими словами, если вы запускаете

MyProgram Java один два

Затем argsсодержит:

[ "один два" ]

public static void main(String [] args) {
    String one = args[0]; //=="one"
    String two = args[1]; //=="two"
}

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


Если вы новичок в Java, я настоятельно рекомендую читать через официальный Oracle, Java TM учебники .

Автор: mR_fr0g Размещён: 21.05.2009 11:10

6 плюса

77 Репутация автора

в public static void main (String args []) args - это массив аргументов консольной строки, тип данных которых - String. в этом массиве вы можете хранить различные строковые аргументы, вызывая их в командной строке, как показано ниже: java myProgram Shaan Royal, затем Shaan и Royal будут сохранены в массиве как arg [0] = "Shaan"; Arg [1] = "Royal"; Вы можете сделать это вручную также внутри программы, когда вы не вызываете их в командной строке.

Автор: Shaan Royal Размещён: 28.05.2013 02:27

8 плюса

199 Репутация автора

Когда вы закончите свой код, вы превратите его в файл с расширением .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, который вы можете использовать в своей программе, если вы хотите, чтобы пользователь мог контролировать специальные параметры, такие как используемый файл или объем памяти, который может иметь программа. Если вы хотите знать, как использовать массив, вы можете найти тему на этом сайте или просто погуглить. Обратите внимание, что можно использовать любое количество параметров.

Автор: Zac Размещён: 23.01.2014 12:50

7 плюса

3531 Репутация автора

Я думаю, что это довольно хорошо охвачено ответами выше, 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)

Автор: sedeh Размещён: 29.11.2014 10:31

3 плюса

391 Репутация автора

Стиль dataType[] arrayRefVarявляется предпочтительным. Стиль dataType arrayRefVar[]происходит от языка C / C ++ и был принят в Java для поддержки программистов на C / C ++.

Автор: Gerald Размещён: 17.01.2015 12:49

6 плюса

179 Репутация автора

Объяснение на простом непрофессиональном языке.

Основной метод ожидает от нас предоставления некоторых аргументов, когда мы направляем нашу 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]);
    }
Автор: Jatin Lalwani Размещён: 24.03.2016 10:07

11 плюса

1109 Репутация автора

Даже если 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 лет с тех пор, как ОП задал этот вопрос, я думаю, что ОП уже может ответить на его собственный вопрос.

Автор: Igoranze Размещён: 15.06.2016 12:17

11 плюса

3485 Репутация автора

Я бы расстался

public static void main(String args[])

по частям.

«public» означает, что main () может быть вызван из любого места.

«static» означает, что main () не принадлежит конкретному объекту

«void» означает, что main () не возвращает значения

«main» - это имя функции. main () является особенным, потому что это начало программы.

«Строка []» означает массив строк.

«args» - это имя String [] (в теле main ()). «args» не является особенным; Вы можете назвать это как-нибудь еще, и программа будет работать так же.

  • String[] argsпредставляет собой набор строк, разделенных пробелом, который может быть введен в программу на терминале. В большинстве случаев новичок не собирается использовать эту переменную, но она всегда есть на всякий случай.
Автор: Jaimin Patel Размещён: 20.08.2016 09:00

16 плюса

714 Репутация автора

Следующий ответ основан на моем понимании и некотором тесте.

Что такое 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    

  }
}
Автор: Ajinkya Размещён: 30.09.2016 08:50

0 плюса

19 Репутация автора

В дополнение ко всем предыдущим комментариям.

public static void main(String[] args) 

можно записать как

 public static void main(String...arg)

или же

 public static void main(String...strings)
Автор: Rahul Anand Размещён: 24.12.2018 10:23
Вопросы из категории :
32x32