Java: Метод main
Возможно вы удивитесь, но на протяжении всех предыдущих уроков, мы создавали свой собственный метод. Каркас метода был заранее написан, а от вас требовалось добавить его тело. Практика выглядела так:
public class App < public static void main(String[] args) < // BEGIN // А здесь вы писали свой код // END >>
Зачем мы создавали метод? Java так устроена, что в ней невозможно выполнять код вне методов. Вы не можете просто написать код на уровне файла и запустить его. Компилятор выдаст ошибку:
// Файл с таким кодом не компилируется System.out.println("Хотя казалось бы");
А вот такой код уже сработает:
public class App < public static void main(String[] args) < System.out.println("Хотя казалось бы"); >>
В работе вы часто будете видеть примеры вне методов. Почему мы и другие так делают? Исключительно для удобства.
Если на каждую строчку добавлять обертку в виде класса и метода, то объем шума и материала вырастет значительно. Всегда учитывайте это, ведь создатели этих материалов рассчитывают на то, что вы понимаете как работает Java.
Видите код, который вызывается без методов, всегда добавляйте обертку, как показано выше. Тогда вы легко сможете запустить этот код, например, локально.
Метод main
Почему метод в наших примерах называется main ? Мы ведь могли написать какой-то такой пример:
public class App < // run - имя выбрано произвольно // имя может быть любым, как захочет автор кода public static void run() < // здесь какой-то код >>
Мы могли бы так сделать, и все бы работало, но есть один момент. В таком виде метод main , как мы его определяем, имеет особенное значение для Java.
Java автоматически его вызывает, когда программа запускается из консоли:
# В файле App находится класс с именем App java App.java # компилирует и запускает на исполнение # Внутри запустится метод App.main, если он определен
Любой другой метод автоматически не вызывается. Именно поэтому мы везде используем main , ведь так можно легко перенести код из тренажера к себе в редактор и запустить его на выполнение.
Обязательно ли его определять? Нет, Java не накладывает никакого ограничения на то, какие и сколько методов вы определите в классе.
Так же как и нет ограничения на количество и имена классов.
Для простоты мы всегда используем имя App , но в реальном коде вы встретите тысячи разных имен и классов. Правда с условием, что в одном файле находится ровно один класс:
class MySuperClassName < public static void oneMethod() < >public static void twoMethod() < >public static void threeMethod() < >>
Об этом мы поговорим в курсе по ООП в Java.
Главное, что нужно сейчас запомнить — любые статические методы вызываются через точку после имени класса, а сами вызовы происходят внутри других методов:
// Просто пример вызовов методов друг из друга class MySuperClassName < public static void oneMethod() < MySuperClassName.twoMethod(); >public static void twoMethod() < MySuperClassName.threeMethod(); >public static void threeMethod() < >>
Задание
Реализуйте класс с именем App и двумя методами:
- Метод gogo() , который печатает на экран строку It works!
- main() , как в определении выше, который вызывает метод gogo()
Результат вызова main() в таком случае будет таким:
// => "It works!"
Упражнение не проходит проверку — что делать?
Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:
- Обязательно приложите вывод тестов, без него практически невозможно понять что не так, даже если вы покажете свой код. Программисты плохо исполняют код в голове, но по полученной ошибке почти всегда понятно, куда смотреть.
В моей среде код работает, а здесь нет
Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.
Мой код отличается от решения учителя
Это нормально , в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.
В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.
Прочитал урок — ничего не понятно
Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.
Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.
Как подать два параметра на вход метода main String args[]?
Первый — path — путь к директории, второй — resultFileAbsolutePath — имя (полный путь) существующего файла.
Отслеживать
7,008 6 6 золотых знаков 37 37 серебряных знаков 65 65 бронзовых знаков
задан 14 апр 2019 в 7:32
Magomet Bahadirov Magomet Bahadirov
59 5 5 бронзовых знаков
Если ответ помог вам, то примите его, нажав на стрелочку вверх рядом с ним и на галочку.
14 апр 2019 в 7:46
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
В Java метод main принимает массив String[] args . args — это аргументы командной строки, которые вы можете указать при запуске.
Другими словами, если вы запустите свою программу из командной строки как java MyProgram one two , то args будет содержать [«one», «two»] . Соответственно, вы можете запустить свою программу с нужными аргументами командной строки — java MyProgram .
Если вы запускаете программу из IntelliJ, то вы можете указать аргументы в самой IDE. Для этого выполните шаги ниже:

В меню Run/Debug нажмите на Edit Configuration .

В поле Program arguments введите аргументы командной строки. Источник(ruSO).
Что же это такое — public static void main(String[] args) — введение в Java 022 #
Давайте попробуем приподнять завесу тайны с метода, который мы писали чаще всего. Надо всё-таки понимать хоть немного, то что мы пишем.
Мы уже знаем, что такое main — точка входа в нашу программу. Мы знаем что такое void — это просто метод который выполняет код. Пришло время понять, что мы знаем, что String[] args это просто переменная args, которая является строковым массивом.
Давайте попробуем программировать без IDE по олдскульному.
Создадим файл Main.java
public class Main public static void main(String[] args) for (String str : args) System.out.println("My arguments = " + str); > > >
Надеюсь мы ещё помним цикл фор ич, с помощью которого я хочу распечатать массив args.
Выйдем в консоль или терминал:
javac Main.java
java Main ich lerne deutsch
на экране мы получим:
My arguments = ich My arguments = lerne My arguments = deutsch
Теперь мы должны в принципе осознавать, что String[] это массив, args имя переменной массива. И что при запуске мы можем передать эти аргументы, и в теле метода обработать.
Ещё раз. Наш метод принимает массив и выводит его на экран. При запуске программы в терминале мы передаём эти аргументы. Точно так же мы могли не вывести их на экран, а в зависимости от проверки выполнить команды. Например при передаче кодового слова кофе -> запустить метод готовки кофе.
Запуск программы main с аргументами в intellij idea #
- Находим в меню “Run”
- Нажимаем “Edit Configurations”
- В поле “Program arguments” вписываем свои аргументы, например “ich lerne deutsch”
- Результат будет выведен в привычном терминале IDEA.
Домашнее задание #
Напишите программу, которая запускает метод готовки кофе, если переданный аргумент в командной строке “coffee” или “c”.
Как изменить аргументы командной строки Java
В этой статье обсудим, что такое аргументы командной строки Java, как они передаются, как работают и как их изменять.
Как вы проверяете, что ваш код не содержит ошибок, что он работает во всех ситуациях и обрабатывает все пограничные случаи?
Самый простой вариант — это проверить код на всех возможных тестовых примерах. Но их может быть очень много, из-за чего сам процесс тестирования становится сложным и затратным. Нужен другой способ — который может решить задачу легко, и который можно автоматизировать для больших входных данных. Аргументы командной строки в Java — один из таких.
В этой статье мы кратко обсудим, что такое аргументы командной строки, как они передаются и как они работают, но наше основное внимание будет сосредоточено на том, как изменять аргументы командной строки Java.
Что такое аргументы командной строки Java?
Аргументы командной строки Java позволяют передавать аргументы во время выполнения программы непосредственно из консоли, к которой будет обращаться метод main(). А также позволяет использовать их в качестве входных данных или обходить аргументы командной строки, передав значения непосредственно методу main().
// здесь args будет содержать аргументы командной строки public static void main(String[] args) < System.out.println("Привет, мир!"); // оставшийся код будет здесь >
Как работают аргументы командной строки?
Аргументы командной строки, которые предоставляются во время выполнения, упаковываются и передаются в args[].
Args[], по сути, является массивом String, который содержит все переданные ему аргументы. Каждый из них будет храниться по индексу, начиная с args[0] и заканчивая args[n].
Как передать аргументы командной строки?
Аргументы командной строки передаются через командные строки или терминалы. Все переданные через них аргументы будут преобразованы в массив args[] внутри JVM.
Примеры
Предположим, у нас есть файл с некоторым Java-кодом.
Как передавать аргументы командной строки в java:
- Сохраните программу Java с расширением .java (например, Arguments.java).
- Откройте терминал/командную строку в каталоге, где программа хранится локально.
- Скомпилируйте программу Java для преобразования файла .java в .class;
Команда: javac имя_файла.java (здесь javac Arguments.java). - Запустите программу и передайте аргументы после имени файла, разделённые пробелами;
Команда: java имя файла аргумент1 аргумент2 …. argumentsN (здесь Аргументы java).
Как получить доступ к аргументам командной строки?
Теперь давайте попробуем сейчас получить доступ ко всем переданным аргументам командной строки вJava.
Поскольку эти аргументы хранятся в массиве args[], мы можем получить к ним доступ, используя args[i], где i — это индекс, который может варьироваться от 0 до n (общее количество переданных аргументов).
Аргументы класса < public static void main( String[] args ) < System.out.println("Привет, мир!"); // args.length используется для получения длины массива args System.out.println(" Общее количество аргументов: " + args.length); // итерация по массиву args для вывода аргументов, если они доступны for (int i = 0; i < args.length; i++) < System.out.println("Аргумент" + i + ": " + args[i]); >> >
Привет мир! Общее количество аргументов: 7 Аргумент 0: Добро пожаловать Аргумент 1: в Аргумент 2: это Аргумент 3: блог Аргумент 4: и Аргумент 5: Счастливый Аргумент 6: Обучение
Как изменить аргументы командной строки?
Мы можем использовать args[i] для получения значения по i-му индексу. А затем, используя оператор присваивания (=), изменить аргумент по i-му индексу.
Код ниже изменит некоторые аргументы, переданные через командную строку в Java.
args[1] = "Измененный аргумент командной строки 1"; args[3] = "Измененный аргумент командной строки 2"; args[5] = "Измененный аргумент командной строки 3";
Привет мир! Общее количество аргументов: 7 Аргумент 0: Добро пожаловать Arg 1: измененный аргумент командной строки 1 Аргумент 2: это Arg 3: измененный аргумент командной строки 2 Аргумент 4: и Arg 5: измененный аргумент командной строки 3 Аргумент 6: Обучение
В двух словах
- Аргументы командной строки Java — это способ ввода данных в программу через командную строку.
- Аргументы командной строки передаются при выполнении команды запуска сразу после имени файла и разделяются пробелами.
- Аргументы командной строки принимаются массивом строк ( args[] ) в основной функции.
- Мы можем получить доступ к аргументам командной строки или изменить их, используя args[i] и операторы присваивания.