Запуск Java ·
‹ Предыдущий Следующий ›
⏱ 5 минут чтения Обновлено: 2026-06-29

Аргументы командной строки

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

Видео объяснение

Предпочитаете видеоформат? Посмотрите этот урок с примерами и объяснениями.

Комментарии

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