Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Метод main Основы Java

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

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() {
    }
}

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы

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

Иконка программы Java-разработчик
Профессия
с нуля
Разработка приложений на языке Java
2 февраля 10 месяцев

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»