Аргументы командной строки
На вход программы можно передавать значения с помощью аргументов командной строки. Чтобы запустить программу MySecondApp и передать на вход значения "value1" и "value2", используем следующую команду:
java com.company.lesson2.MySecondApp value1 value2 Эти значения нам нужно получить в программе. В этом нам поможет метод main:
public static void main(String[] args) Этот метод принимает на вход в качестве параметра массив типа String: String[] args. Именно эта переменная и будет содержать в себе, переданные нами значения "value1", "value2".
Метод main() в следующем примере использует цикл for для перебора элементов массива args и распечатывает значения аргументов командной строки. Что такое цикл for и массивы мы рассмотрим более подробно в следующих занятиях.
package com.company.lesson2;
public class MySecondApp {
public static void main(String[] args) {
for (String str : args) {
System.out.println("аргумент = " + str);
}
}
}
Запустим его с помощью команды:
java com.company.lesson2.MySecondApp value1 value2 Вывод на консоль:
аргумент = value1
аргумент = value2 Системные свойства: ключ -D
Аргументы командной строки — не единственный способ передать данные в программу при запуске. Есть ещё системные свойства, которые задаются ключом -D в формате -Dимя=значение. Важно не путать их с аргументами:
- Аргументы идут после имени класса и попадают в массив
args. - Системные свойства (
-D) идут перед именем класса и читаются методомSystem.getProperty(), а не изargs.
Например, запустим программу с одним системным свойством и одним аргументом:
java -DmyProp=hello com.company.lesson2.MySecondApp value1 Здесь myProp=hello — системное свойство, а value1 — аргумент командной строки. Получить их в коде можно так:
public class MySecondApp {
public static void main(String[] args) {
System.out.println(System.getProperty("myProp")); // hello
System.out.println(args[0]); // value1
}
} Все системные свойства сразу можно получить методом System.getProperties() — он возвращает объект Properties со всеми свойствами JVM, включая ваши -D и стандартные (например, java.version, os.name).
Не путайте args и -D
Позиция важна: всё, что стоит после имени класса, — аргументы (args); всё, что перед ним с префиксом -D, — системные свойства (System.getProperty). Если поставить -Dprop=val после имени класса, оно попадёт в args как обычная строка и свойством не станет.
Часто задаваемые вопросы
Что такое аргументы командной строки в Java?
Это значения, которые передаются программе при запуске после имени класса, например java MyApp value1 value2. Внутри программы они доступны через массив String[] args метода main.
Какого типа аргументы командной строки?
Всегда String. Даже если передать число, например 42, оно придёт строкой "42". Чтобы получить число, его нужно преобразовать, например через Integer.parseInt(args[0]).
Как передать аргумент, содержащий пробел?
Заключите его в кавычки: java MyApp "Hello World". Тогда это будет один аргумент args[0], а не два.
Чему равно args.length, если аргументы не переданы?
Нулю. В Java args — это пустой массив (не null), поэтому args.length == 0, и цикл по нему просто не выполнится ни разу.
Презентацию с видео можно скачать на Patreon.
Видео объяснение
Предпочитаете видеоформат? Посмотрите этот урок с примерами и объяснениями.
Комментарии