JavaRush/Курси/JAVA 25 SELF/Структура програми на Java та метод main

Структура програми на Java та метод main

Відкрита

1. Вступ

Коли ви лише починаєте програмувати, здається, що можна просто писати код рядок за рядком — і все запрацює. Але щойно програма ускладнюється, у голові з’являється плутанина: що де лежить, навіщо це написано, і якщо потрібно змінити один рядок — де його взагалі шукати?

Тому Java, як і більшість сучасних мов, пропонує спосіб «розкладати» код по поличках, щоб у будь‑який момент можна було зрозуміти, що робить програма, та швидко знайти потрібне місце.

Уявіть собі компанію. У ній є відділ кадрів, бухгалтерія, ІТ‑відділ, відділ логістики тощо. У кожного відділу — своя зона відповідальності, свої працівники та завдання.

У програмі на Java кожен такий «відділ» — це клас. Один клас відповідає, наприклад, за роботу з користувачами, інший — за обчислення, третій — за роботу з файлами.

Ось типова структура простого проєкту:

  • Main.java — головний офіс: тут міститься «точка входу», звідки все починається.
  • User.java — відділ, де зберігаються та обробляються дані про користувача.
  • Calculator.java — відділ обчислень.
  • FileHelper.java — фахівці з файлів.

Навіть у зовсім маленькій програмі зазвичай є бодай один клас. А великі проєкти — це вже цілий «хмарочос» із сотень класів!

2. Клас — це коробка з інструментами

Java — це об’єктно‑орієнтована мова, і усе в ній є об’єктами. Типи об’єктів називаються класами.

Клас — це як коробка або шафка, куди ми складаємо потрібні нам речі: змінні та методи. Уявіть коробку з написом «Молотки»: усередині лежать лише інструменти, повʼязані з молотками.

class Example
{
    // Тут будуть наші інструменти: змінні та методи
}

Класи зазвичай містять змінні та функції. У Java змінні класу прийнято називати полями, а функції класу — методами. Але сенс від цього не змінюється.

Памʼятаєте наш перший код?

System.out.println("Всім привіт!");

У цьому коді є і клас, і методи:

  • System — це клас, який містить методи для роботи з системою.
  • out — це поле, яке є об’єктом класу PrintStream.
  • println — це метод класу PrintStream, який виводить текст на екран.

Усе програмування певною мірою зводиться до написання власних класів і методів, які викликають методи інших класів.

3. Скорочений запис методу main()

Мінімальна програма на Java виглядає ось так:

class Program
{
    public static void main(String[] args)
    {
        // Тут ваш код
    }
}

Вона має містити принаймні один клас із методом main такого заголовка (сигнатури):

public static void main(String[] args)
Сигнатура методу main у Java

Проте в Java 25 зʼявилася можливість писати метод main() у скороченій формі (у Java 21–24 вона була доступна лише в режимі preview).

Тож щоразу, коли ви пишете код на кшталт:

void main()
{
    Scanner console = new Scanner(System.in);
    int age = console.nextInt();
    System.out.println("Вік: " + age);
}

Java‑компілятор сам «загортає» такий код у клас. Спрощено це виглядає так:

import module java.base;      // неявно: усе з java.base доступне без import

final class Program {         // імʼя береться з імені файлу: Program.java
    void main() {             // метод екземпляра, не static і без String[]
        Scanner console = new Scanner(System.in);
        int age = console.nextInt();
        System.out.println("Вік: " + age);
    }
}

4. Типовий Java‑клас

Типовий Java‑клас виглядає приблизно так:

public class MathUtils
{
    // Статичні змінні (глобальні для класу)
    static final double PI = 3.14159;
    static int callCounter = 0;

    // Статичний метод: обчислення площі кола
    public static double circleArea(double radius)
    {
        callCounter++;
        return PI * radius * radius;
    }

    // Статичний метод: пошук максимуму з двох чисел
    public static int max(int a, int b)
    {
        callCounter++;
        return (a > b) ? a : b;
    }

    // Статичний метод: скільки разів викликали методи
    public static int getCallCount()
    {
        return callCounter;
    }

    // Звертаємося до полів і методів із методу main()
    public static void main(String[] args)
    {
        System.out.println("Площа кола: " + circleArea(5));
        System.out.println("Максимум: " + max(10, 42));
        System.out.println("Методи викликалися " + getCallCount() + " разів");
    }
}

Що тут маємо:

  • Клас може мати багато методів.
  • Клас може мати свої змінні.
  • Методи класу можуть викликати один одного.
  • Методи класу можуть звертатися до спільних змінних.
  • Перед кожним методом є однакові «чарівні слова» на кшталт: public static.
  • Перед кожним методом є різні типи: int, double, void.

Нижче розберемо всі ці нюанси.

5. Поля (змінні) класу — це його памʼять

Всередині класу можна зберігати змінні, які часто називають полями (fields). Це як комірки памʼяті, куди ми складаємо якісь дані.

public class MathUtils
{
    // Статичні змінні (глобальні для класу)
    static final double PI = 3.14159;
    static int callCounter = 0;
}

Поля дозволяють класу щось памʼятати між викликами різних методів. Наприклад, рахувати, скільки разів натискали кнопку. Або скільки разів було викликано метод (callCounter). Полів може бути скільки завгодно.

6. Методи — дії, які може виконувати клас

Методи — це «уміння» нашого класу. Якщо клас — співробітник, то методи — це його навички: що він уміє робити.

Наприклад, метод може:

  • вивести щось на екран,
  • порахувати суму двох чисел,
  • прийняти дані «на вхід» і повернути результат.

Будова методу:

  1. Тип значення, що повертається (наприклад, void — якщо нічого не повертає, або int — якщо повертає число).
  2. Імʼя методу (наприклад, circleArea).
  3. Параметри в дужках (можуть бути відсутніми).
  4. Фігурні дужки { ... } — тіло методу.
public class MathUtils
{
    // Статичний метод: обчислення площі кола
    public static double circleArea(double radius)
    {
        callCounter++;
        return PI * radius * radius;
    }

    // Статичний метод: пошук максимуму з двох чисел
    public static int max(int a, int b)
    {
        callCounter++;
        return (a > b) ? a : b;
    }
}

Детальніше про методи й усі повʼязані з ними нюанси ви дізнаєтеся в найближчих лекціях.

7. Модифікатори доступу

У Java можна визначати, які частини класу доступні з інших класів, а які лишаються тільки для внутрішніх потреб. Для цього використовуються модифікатори доступу.

  • public — видно всім. Такі методи й поля можна використовувати або викликати з будь‑якого місця програми.
  • private — видно тільки всередині самого класу. Це внутрішні деталі, які не мають бути доступні іншим. Наче їх узагалі не існує.
public class MathUtils
{
    // Статичні змінні (глобальні для класу)
    private static final double PI = 3.14159;
    private static int callCounter = 0;

    // Статичний метод: обчислення площі кола
    public static double circleArea(double radius)
    {
        callCounter++;
        return PI * radius * radius;
    }
}

Золоте правило: поля зазвичай роблять private, а назовні «виносять» тільки потрібні методи з модифікатором public. Детальніше про модифікатори доступу — у найближчих лекціях.

8. Статичні методи та змінні

Зазвичай у Java клас використовують як шаблон для створення об’єктів. Ви пишете свій клас, далі створюєте об’єкти цього класу за допомогою ключового слова new, а потім викликаєте методи цих об’єктів.

Втім, є й другий спосіб використання класу — як контейнер для глобальних змінних і методів, які можна викликати з будь‑якого місця програми. Саме для цього використовується ключове слово static. Воно повідомляє Java‑компілятору, що методи й поля класу привʼязані не до об’єкта класу, а безпосередньо до самого класу. Тому їх можна викликати взагалі без створення об’єктів класу.

До речі, ви постійно користуєтеся такими методами:

Integer.parseInt();     // Статичний метод parseInt() у класі Integer
String.valueOf();       // Статичний метод valueOf() у класі String
Double.isInfinite();    // Статичний метод isInfinite() у класі Double
Arrays.copy();          // Статичний метод copy() у класі Arrays

Метод main() завжди оголошується статичним, адже з нього починається виконання вашої Java‑програми. І це відбувається ще до створення будь‑яких об’єктів.

9. Порада в IntelliJ IDEA

Повна сигнатура методу main() виглядає так:

public static void main(String[] args)

Щоб не писати її щоразу в IntelliJ IDEA, можна скористатися скороченням. Просто наберіть psvm і натисніть Tab — IntelliJ IDEA сама за вас напише ось такий код:

public static void main(String[] args)
{

}

Запамʼятати її легко — psvm — це перші літери від public static void main.

1
Задача
JAVA 25 SELF,  8 рівень,  1 лекція
Недоступна
Твоє перше заклинання у світі Java ✨
Твоє перше заклинання у світі Java ✨
1
Задача
JAVA 25 SELF,  8 рівень,  1 лекція
Недоступна
Особистий калькулятор для швидкого підрахунку ➕
Особистий калькулятор для швидкого підрахунку ➕
1
Задача
JAVA 25 SELF,  8 рівень,  1 лекція
Недоступна
Ведення рахунку в захопливій грі 🎮
Ведення рахунку в захопливій грі 🎮
1
Задача
JAVA 25 SELF,  8 рівень,  1 лекція
Недоступна
Підсилювач повідомлень для гучних оголошень 📣
Підсилювач повідомлень для гучних оголошень 📣
Коментарі
  • популярні
  • нові
  • старі
Щоб залишити коментар, потрібно ввійти в систему
Для цієї сторінки немає коментарів.