Что такое «String args »? параметр в основном методе Java

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

public static void main(String[] 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]); } } } 

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

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

java MyProgram один двое

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

[ “один два” ]

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

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


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

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

 $ java MyProg -f file.txt 

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

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

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

Ans->

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

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

Например
1) public static 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. Вы можете легко разобрать его в любом примитивном типе данных.

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

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

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 () является особенным, потому что это начало программы.

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

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

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

Когда вы закончите свой код, вы превратите его в файл с расширением .java, который можно запустить, дважды щелкнув по нему, но также и на консоли (терминал на mac, cmd.exe на windowsх), который позволяет пользователю выполнять много вещей. Одна вещь – они могут видеть сообщения консоли (System.out.print или System.out.println), которые они не могут видеть, если они дважды щелкнут. Другое, что они могут сделать, это указать параметры, поэтому обычно вы используете линию

 java -jar MyCode.jar 

после перехода в папку программы с помощью

 cd C:My/Code/Location 

на windowsх или

 cd My/Code/Location 

на Mac (обратите внимание, что mac менее clunky) для запуска кода, но для указания параметров, которые вы бы использовали

 java -jar MyCode.jar parameter1 parameter2 

Эти параметры, хранящиеся в массиве args, которые вы можете использовать в своей программе, вы хотите разрешить пользователю управлять специальными параметрами, такими как файл для использования или объем памяти, который может иметь программа. Если вы хотите знать, как использовать массив, вы, вероятно, можете найти тему на этом сайте или просто отправить ее в Google. Обратите внимание, что можно использовать любое количество параметров.

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

 public static void main(String []) 

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

 java MyClass abc 

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

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

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

public static void main (String... args)

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

public static void main (String[] arguments)

public static void main (String[] freddiefujiwara)

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

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

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

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

Offtopic: Прошло 7 лет с тех пор, как ОП задал этот вопрос, я думаю, что OP может ответить на его собственный вопрос.

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

Основной метод предполагает, что мы предоставим некоторые аргументы, когда мы направляем нашу JVM на имя classа. Это означает, что ваше имя файла – Try.java, теперь для выполнения этого в командной строке вы пишете «javac Try.java» для компиляции, за которым следует «java Try» для выполнения. Теперь предположим вместо того, чтобы писать просто «java Try», вы пишете «java Try 1». Здесь вы передали аргумент «1». Это будет сделано вашим основным методом, даже если вы не используете его в своем коде.

Если вы хотите проверить, действительно ли ваш основной метод принял аргумент «1» или нет. Просто внутри основного метода введите следующее:

 for(int i = 0; i < args.length; i++) { System.out.println("Argument is: "+args[i]); } 

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

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

Например, в Intellij вы можете включить аргументы, выполнив:
Запустить -> Изменить конфигурации … -> Вкладка «Конфигурация» -> «Аргументы программы»

введите описание изображения здесь

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

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

Этот fragment будет печатать:

аргумент arg1
аргумент arg2
имя аргумента arg 3

  • Укажите монитор при открытии файла. (.летучая мышь)
  • Какова цель статического ключевого слова в параметре массива функции типа «char s »?
  • Как передать переменную SelectCommand из SqlDataSource?
  • В чем разница между «$ @» и «$ *» в Bash?
  • Манипулировать multidimensional array в функции
  • Конфликт перегруженных методов с дополнительными параметрами
  • Конструктор UserControl с параметрами в C #
  • Запрос Http Servlet теряет параметры из тела POST после прочтения его один раз
  • Аргументы или параметры?
  • Должен ли компилятор указывать / предупреждать при передаче экземпляров объекта непосредственно в качестве параметров интерфейса const?
  • Что означает int argc, char * argv ?
  • Interesting Posts

    Сравнение: LINQ vs LAMBDA Expression

    Как добавить / обновить дочерние сущности при обновлении родительского объекта в EF

    Как масштабировать изображение в CSS-спрайте

    В чем разница между require (‘mypackage.js’) и require (‘mypackage’)?

    Создание пользовательского editText с функцией тегов

    Интернет полностью не в состоянии работать

    На этот диск нельзя установить Windows. Выбранный диск имеет стиль раздела GPT?

    Пользовательская проверка MVC: сравнить две даты

    Планирование задания с помощью Spring программно (с динамическим набором fixedRate)

    Как играть в MP3-файлы через мою стереосистему?

    Как включить BLOB-протоколирование для приложения Node.js Api на Azure?

    Загрузка файла с помощью AngularJS

    Каков наилучший способ хранения пользовательских настроек для приложения .NET?

    go клиентская программа генерирует много сокетов в состоянии TIME_WAIT

    Как отключить потоковую передачу сообщений в Lotus Notes

    Давайте будем гением компьютера.