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

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

JAVA 25 SELF
Рівень 8 , Лекція 1
Відкрита

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 21 зʼявилася можливість писати метод main() у скороченій формі. Java‑компілятор згодом (під час компіляції) перетворить його на коректний метод main().

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

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

Java‑компілятор перетворює його на такий код:

class Program 
{
    public static void main(String[] args) 
    {
        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.

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ