Что такое "строковые аргументы []"? параметр в основном методе Java - PullRequest
283 голосов
/ 21 мая 2009

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

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

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

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

Ответы [ 14 ]

273 голосов
/ 21 мая 2009

В 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]);
        }
    }
}
98 голосов
/ 21 мая 2009

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

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

Java MyProgram один два

Тогда args содержит:

["один", "два"]

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

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


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

37 голосов
/ 21 мая 2009

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

$ java MyProg -f file.txt

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

14 голосов
/ 30 сентября 2016

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

Что такое строка [] args?

Ans->

String [] -> Как мы знаем, это простой массив String.

args -> - это имя массива, которое может быть любым (например, a, ar, аргумент, параметр, параметр), никаких проблем с компилятором и выполненным, и я также протестировал.

1020 * Е.Г. *
1) открытый статический void main (аргумент String [])

2) public static void main (параметр String [])

Когда бы вы использовали эти аргументы?

Ans ->

Основная функция разработана очень разумно разработчиками. Фактическое мышление очень глубоко. Который в основном разрабатывается на основе C & C ++ на основе аргумента командной строки, но в настоящее время никто не использует его больше.

Вещи 1- Пользователь может вводить данные любого типа из командной строки. Это может быть Number или String, которые необходимы для принятия компилятором, какой тип данных нам следует использовать? увидеть вещь 2

Thing 2- String - это тип данных, который поддерживает все примитивные типы данных, такие как int, long, float, double, byte, shot, char в Java. Вы можете легко разобрать его в любом примитивном типе данных.

Eg Следующая программа скомпилирована и выполнена, и я также протестировал.

Если ввод -> 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    

  }
}
12 голосов
/ 21 мая 2009

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
}
11 голосов
/ 20 августа 2016

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

public static void main(String args[])

по частям.

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

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

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

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

"String []" означает массив String.

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

  • String[] args - это набор строк, разделенных пробелом, который можно ввести в программу на терминале. В большинстве случаев новичок не собирается использовать эту переменную, но она всегда есть на всякий случай.
9 голосов
/ 15 июня 2016

Даже если ОП говорит только о String[] args, я хочу привести полный пример public static void main(String[] args).

Public: модификатор доступа , который определяет, кто может получить доступ к этому методу. Открытый означает, что этот метод будет доступен любому классу (если другие классы могут получить доступ к этому классу.).

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

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

8 голосов
/ 23 января 2014

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

7 голосов
/ 30 ноября 2014

Я думаю, что ответы, приведенные выше, довольно хорошо охватывают то, что String args[] - это просто массив строковых аргументов, которые вы можете передать своему приложению при запуске. В завершение я могу добавить, что также допустимо определить параметр метода, передаваемый методу main, в качестве аргумента переменной (varargs) типа String:

public static void main (String... args)

Другими словами, метод main должен принимать либо массив String (String args[]), либо varargs (String... args) в качестве аргумента метода. И нет волшебства с именем args. Вы также можете написать arguments или даже freddiefujiwara, как показано ниже e.gs.:

public static void main (String[] arguments)

public static void main (String[] freddiefujiwara)

6 голосов
/ 24 марта 2016

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

Основной метод ожидает от нас предоставления некоторых аргументов, когда мы направляем нашу 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]);
    }
...