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

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

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

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

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

19 ответов

На яве 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]);
        }
    }
}

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

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

MyProgram Java один два

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

[ "один два" ]

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

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


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

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

$ java MyProg -f file.txt

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

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

Что такое String[] args?

Ans->

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

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

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

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

public static void main(String args[])

по частям.

"public" означает, что main() может быть вызван откуда угодно.

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

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

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

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

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

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

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
}

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

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

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

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

public static void main(String [])

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

java MyClass a b c

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

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

public static void main (String... args)

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

public static void main (String[] arguments)

public static void main (String[] freddiefujiwara)

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

String[] argsозначает массив последовательности символов (строк), которые передаются в "главную" функцию. Это происходит при выполнении программы.

Пример выполнения программы на Java через командную строку:

java MyProgram This is just a test

Следовательно, в массиве будут храниться: ["This", "is", "just", "a", "test"]

В 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)

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

Вы также можете использовать приведенный ниже синтаксис.

      public static void main(String... args)

здесь многоточие, т.е. три точки после типа данных String указывает ноль или несколько аргументов (переменное количество аргументов).

Попробуй это:

System.getProperties().getProperty("sun.java.command", 
    System.getProperties().getProperty("sun.rt.javaCommand"));

Вы можете включить аргументы в свою программу, используя большинство современных IDE.

Например, в Intellij вы можете включить аргументы, выполнив:
Выполнить -> Редактировать конфигурации... -> вкладка Конфигурация -> Аргументы программы

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

public static void main(String[] args) {
     for(String arg: args) {
          System.out.println("arg " + arg);
     }

}

Этот фрагмент будет печатать:

аргумент аргумент1
аргумент аргумент2
аргумент имя аргумента 3

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