← Back to course

Твоя перша програма на Java

Ласкаво просимо назад! ☕

У попередньому уроці ми підготували середовище розробки:

Тепер нарешті настав час зробити те, заради чого ми сюди прийшли:

написати трохи Java.

У цьому уроці ми створимо нашу першу справжню Java-програму:

public class Main {

    public static void main(String[] args) {
        System.out.println("Hello, InnoMarts!");
    }

}

На перший погляд це підозріло багато тексту лише для того, щоб вивести одне речення.

Не хвилюйся.

До кінця уроку більша частина цього вже буде мати сенс.

Твоя перша Java-програма в IntelliJ IDEA


Чого ти навчишся

Після цього уроку ти зможеш:

Так.

Ламати програму офіційно входить у план уроку.

Ласкаво просимо у світ програмування. 😄


1. Відкрий свій Java-проєкт

Запусти IntelliJ IDEA та відкрий проєкт, який ми створили в Уроці 1:

java-course

У панелі Project ти маєш побачити щось приблизно таке:

java-course
└── src

Папка src — це місце, де буде знаходитися наш вихідний Java-код.

Тепер нарешті треба щось туди покласти.


2. Створи свій перший Java-клас

Натисни правою кнопкою миші на папку src.

Вибери:

New → Java Class

Введи:

Main

і натисни Enter.

IntelliJ IDEA створить файл:

Main.java

Усередині ти маєш побачити щось подібне:

public class Main {

}

Вітаю.

Ти щойно створив свій перший Java-клас.

Поки що він абсолютно нічого не робить.

Але не будемо його надто швидко засуджувати.

Він існує приблизно п'ять секунд.


3. Що таке клас?

Java-програми будуються навколо класів.

Поки що можеш уявляти клас як контейнер для пов'язаного коду.

Пізніше в курсі ми створюватимемо класи на кшталт:

User
Car
Product
BankAccount
Task
Order

А сьогодні почнемо з класичного:

Main

Оголошення нашого класу виглядає так:

public class Main {

}

Розберімо його по частинах.


public

Слово:

public

називається модифікатором доступу.

Поки що достатньо знати, що воно робить клас доступним з інших частин програми.

До модифікаторів доступу ми нормально повернемося, коли дійдемо до об'єктно-орієнтованого програмування.

Тому не намагайся сьогодні запам'ятати весь всесвіт Java.

У мозку й так уже відкрито достатньо вкладок.


class

Ключове слово:

class

каже Java:

"Я створюю клас."

У Java є багато ключових слів зі спеціальним значенням.

class — одне з них.


Main

Це назва нашого класу:

Main

Назви класів у Java зазвичай починаються з великої літери.

Наприклад:

Main
User
Product
BankAccount
ShoppingCart

І тут важлива річ.

Java чутлива до регістру.

Тобто:

Main
main
MAIN

це три різні назви.

Java не дивиться на них і не думає:

"Та майже те саме."

Java трохи менш поблажлива, ніж твої друзі.


4. Чому файл називається Main.java?

Наш файл називається:

Main.java

а всередині є:

public class Main

Якщо top-level клас оголошений як public, назва файлу має збігатися з назвою класу.

Тобто:

public class Main

має знаходитися у:

Main.java

А:

public class User

у:

User.java

І клас:

public class VeryImportantEnterpriseApplication

жив би у файлі:

VeryImportantEnterpriseApplication.java

Так.

Java любить правила.

І довгі назви.

Особливо довгі назви.


5. Додай метод main()

Тепер зміни файл ось так:

public class Main {

    public static void main(String[] args) {

    }

}

Найважливіший новий рядок:

public static void main(String[] args)

Це метод main.

У простій Java-програмі саме звідси починається виконання.

Можеш уявляти його як вхідні двері програми.

Коли Java питає:

"Звідки мені почати?"

ми показуємо на:

main()

6. Страшний public static void main(String[] args)

Цей рядок часто лякає початківців:

public static void main(String[] args)

Виглядає так, ніби хтось спробував запхнути половину Java в один рядок.

Розберімо його на частини.


public

public

означає, що метод доступний ззовні класу.

Поки що цього достатньо.


static

static

дозволяє Java використовувати цей метод без попереднього створення об'єкта класу Main.

До об'єктів ми ще дійдемо.

Набагато пізніше.

Поки що запам'ятай:

static дозволяє Java почати звідси напряму.


void

void

означає, що метод нічого не повертає.

Пізніше ми створюватимемо методи, які повертають, наприклад:

42
"Hello"
true
об'єкт User

Але main() нічого не повертає.

Тому використовуємо:

void

main

Це просто назва методу:

main

Java очікує саме цю назву для стандартної точки входу програми.

Зверни увагу на маленьку m.

Це:

main

і це:

Main

дві різні речі.

Одне — метод.

Інше — клас.


String[] args

Наприкінці маємо:

String[] args

Це дозволяє програмі отримувати аргументи з командного рядка.

Наприклад, колись ми зможемо запустити:

java Main Viktor

і отримати:

Viktor

всередині програми.

Поки що аргументи командного рядка нам не потрібні.

Масиви теж будуть трохи пізніше.

Тому зараз просто запам'ятай:

String[] args є частиною стандартного оголошення методу main().

І цього цілком достатньо.

Не будемо поки викликати дух офіційної специфікації Java.


7. Нехай програма щось скаже

Програма вже може стартувати, але поки що нічого не показує.

Виправимо це.

Додай усередину main():

System.out.println("Hello, InnoMarts!");

Повна програма має виглядати так:

public class Main {

    public static void main(String[] args) {
        System.out.println("Hello, InnoMarts!");
    }

}

Це вже повністю робоча Java-програма.

Маленька?

Так.

Важлива?

Теж так.

Кожна велика програма починається з маленьких частин.

Хоча сподіваємося, що твоє майбутнє банківське ПЗ робитиме трохи більше, ніж просто вітатиметься.


8. Запусти свою першу Java-програму

IntelliJ IDEA має показати зелену кнопку Run біля методу main().

Натисни її.

Також можна натиснути правою кнопкою всередині редактора й вибрати:

Run 'Main.main()'

У нижній частині IntelliJ IDEA з'явиться вікно Run.

Ти маєш побачити:

Hello, InnoMarts!

Це результат роботи твоєї програми.

Ти написав Java-код.

Java його скомпілювала.

JVM його виконала.

І комп'ютер послухався.

Насолоджуйся моментом.

Пізніше комп'ютер почне мати власну думку.


9. Що робить System.out.println()?

Подивімося на:

System.out.println("Hello, InnoMarts!");

Досить багато символів для одного простого повідомлення.

Розберімо його на частини.


System

System

це клас, який надає Java.

Він містить корисні функції, пов'язані з середовищем виконання програми.


out

out

представляє стандартний потік виводу.

Для наших перших програм можеш уявляти це просто як:

консоль

println

println

означає приблизно:

вивести рядок.

Воно показує текст, а потім переходить на новий рядок.

Тобто:

System.out.println("Hello!");

виведе:

Hello!

і перемістить курсор нижче.


10. Виводимо кілька рядків

Зробімо програму трохи більш балакучою.

public class Main {

    public static void main(String[] args) {
        System.out.println("Hello!");
        System.out.println("Welcome to Java.");
        System.out.println("This is my first Java program.");
    }

}

Запусти її.

Результат:

Hello!
Welcome to Java.
This is my first Java program.

Кожен println() виводить окремий рядок.

Просто.

Корисно.

І значно цікавіше, ніж порожній клас, який мовчки дивиться в нікуди.


11. print() проти println()

У Java також є:

System.out.print()

Зверни увагу: тут немає:

ln

Порівняймо.

Використовуємо print()

System.out.print("Hello ");
System.out.print("Java");
System.out.print("!");

Результат:

Hello Java!

Усе залишається в одному рядку.

Тепер спробуй:

System.out.println("Hello");
System.out.println("Java");
System.out.println("!");

Результат:

Hello
Java
!

Різниця:

print()   → залишається в тому самому рядку
println() → після виводу переходить на новий рядок

Ти використовуватимеш обидва.

Але на перших уроках println() дуже швидко стане твоїм хорошим другом.


12. Що таке String?

Подивись на:

"Hello, InnoMarts!"

Це String.

String представляє текст.

Наприклад:

"Java"
"My name is Viktor"
"I need more coffee."
"Why is the compiler angry again?"

Усе це — Strings.

Текст у Java пишеться в подвійних лапках:

" "

Пізніше ми присвятимо String окремий урок.

Поки що запам'ятай:

Якщо хочеш, щоб Java сприймала щось як текст, зазвичай потрібні подвійні лапки.


13. Що буде без лапок?

Це працює:

System.out.println("Hello");

А тепер спробуй:

System.out.println(Hello);

IntelliJ почне скаржитися.

Чому?

Без лапок Java думає, що:

Hello

це назва чогось.

Можливо, змінної.

Можливо, поля.

Можливо, якоїсь іншої загадкової істоти, яку ми ще не створили.

Java не може її знайти — тому з'являється помилка.

Поверни лапки:

System.out.println("Hello");

і все знову працює.

Наскільки компілятор узагалі може бути щасливим.


14. Що таке інструкція?

Цей рядок:

System.out.println("Hello!");

є Java-інструкцією.

Інструкція — це команда програмі:

Зроби це.

Наприклад:

System.out.println("One");
System.out.println("Two");
System.out.println("Three");

це три інструкції.

Java виконує їх зверху вниз.

Тому результат буде:

One
Two
Three

а не:

Three
One
Banana
Two

Комп'ютери дивовижно передбачувані, коли код правильний.


15. Крапка з комою ;

Подивись на:

System.out.println("Hello");

Зверни увагу на:

;

У Java багато інструкцій завершуються крапкою з комою.

Можеш уявляти її як крапку наприкінці речення.

А тепер видали її:

System.out.println("Hello")

IntelliJ одразу має показати проблему.

Спробуй запустити програму.

Ти можеш побачити помилку:

';' expected

Java ніби питає:

"Вибач, ти вже закінчив цю інструкцію?"

Поверни крапку з комою:

System.out.println("Hello");

і все знову працює.


16. Фігурні дужки { }

У нашій програмі є фігурні дужки:

{
}

Вони визначають блоки коду.

Наприклад:

public class Main {

}

ці дужки містять усе, що належить класу.

Всередині класу є:

public static void main(String[] args) {

}

ці дужки містять усе, що належить main().

Структурно це виглядає так:

Клас Main
{
    метод main
    {
        інструкції
    }
}

Блоки всередині інших блоків зустрічатимуться в Java постійно.


17. Відступи важливі — для людей

Технічно навіть такий код може бути правильним:

public class Main {
public static void main(String[] args) {
System.out.println("Hello");
}
}

Java його зрозуміє.

Людина теж, технічно, може.

Але вона буде не дуже рада.

Краще так:

public class Main {

    public static void main(String[] args) {
        System.out.println("Hello");
    }

}

Відступи роблять структуру зрозумілою.

IntelliJ IDEA може форматувати код автоматично.

На багатьох системах комбінація:

Ctrl + Alt + L

форматує поточний файл.

Спробуй.

Дивитися, як кривий код раптом стає акуратним, дивно приємно.


18. Коментарі

Іноді ми хочемо залишити примітку всередині коду.

Java має її ігнорувати.

Людина має її прочитати.

Для цього існують коментарі.


Однорядкові коментарі

Однорядковий коментар починається з:

//

Наприклад:

public class Main {

    public static void main(String[] args) {
        // Вивести привітання
        System.out.println("Hello, InnoMarts!");
    }

}

Java ігнорує:

// Вивести привітання

Багаторядкові коментарі

Також можна писати коментарі на кілька рядків:

/*
Це коментар.
Java ігнорує весь цей текст.
Навіть це речення.
*/

Наприклад:

public class Main {

    public static void main(String[] args) {

        /*
        Це наша перша Java-програма.
        Скоро вона стане цікавішою.
        */

        System.out.println("Hello, InnoMarts!");
    }

}

Коментарі корисні.

Але не треба пояснювати абсолютно очевидні речі.

Ось це:

// Вивести Hello
System.out.println("Hello");

майже нічого не додає.

Хороші коментарі частіше пояснюють чому, а не просто що робить код.


19. Давай спеціально все зламаємо 💥

Тепер важлива навичка програміста:

навмисно ламати речі.

Звучить дивно.

Але якщо ти сам створиш помилку, пізніше буде значно простіше її впізнати.


Помилка 1 — Видали крапку з комою

Було:

System.out.println("Hello");

Видали:

;

і отримаємо:

System.out.println("Hello")

Подивись, що покаже IntelliJ.

Спробуй запустити програму.

Потім виправ помилку.


Помилка 2 — Напиши system замість System

Спробуй:

system.out.println("Hello");

Java чутлива до регістру.

Тому:

System

і:

system

це різні назви.

Виправ:

System.out.println("Hello");

Помилка 3 — Забудь лапку

Спробуй:

System.out.println("Hello);

Тепер Java не розуміє, де закінчується String.

Виправ:

System.out.println("Hello");

Помилка 4 — Видали фігурну дужку

Видали одну:

}

з програми.

Може раптом з'явитися багато помилок.

І це важливий урок:

Одна помилка може створити багато повідомлень про помилки.

Якщо IntelliJ показує 12 проблем, це не обов'язково означає, що ти зробив 12 різних помилок.

Іноді просто не вистачає однієї дужки, і Java втратила структуру програми.

Завжди починай з першої помилки.


20. Помилки компілятора корисні

Початківець часто бачить червоний текст і думає:

"Я все знищив."

Зазвичай ні.

Компілятор намагається допомогти.

Наприклад:

';' expected

це вже дуже корисна підказка.

Java очікувала:

;

але не знайшла її.

Помилка не каже:

"Ти жахливо програмуєш."

Вона більше схожа на:

"Я заплуталась саме тут. Перевір це місце."

Уміння читати повідомлення компілятора — одна з найважливіших навичок програміста.


21. Твоя перша персоналізована програма

Тепер зміни програму так, щоб вона розповідала щось про тебе.

Наприклад:

public class Main {

    public static void main(String[] args) {
        System.out.println("My name is Viktor.");
        System.out.println("I am learning Java.");
        System.out.println("I use IntelliJ IDEA.");
        System.out.println("My code has not exploded yet.");
    }

}

Використай своє ім'я та власні фрази.

Якщо тебе справді звати Viktor — можеш трохи зекономити на наборі тексту. 😄


🎯 Завдання 1 — Developer Card

Створи програму, яка виведе:

========================
     DEVELOPER CARD
========================
Name: Viktor
Language: Java
IDE: IntelliJ IDEA
Level: Beginner
Goal: Build real projects
========================

Використай кілька:

System.out.println()

Спробуй написати всю програму самостійно.


🎯 Завдання 2 — print() + println()

Спробуй отримати точно такий результат:

Hello, Java!
Let's build something.

Але у своєму рішенні використай і:

System.out.print()

і:

System.out.println()

Правильних варіантів може бути кілька.

Експериментуй.


🎯 Завдання 3 — Передбач результат

Подивись на код:

public class Main {

    public static void main(String[] args) {
        System.out.print("Java ");
        System.out.print("is ");
        System.out.println("fun!");
        System.out.println("Let's continue.");
    }

}

Перш ніж натиснути Run, спробуй точно передбачити результат.

Потім запусти програму та порівняй.

Це дуже корисна звичка.

Замість постійно питати:

"Що зробив комп'ютер?"

починай питати:

"Що я очікую від комп'ютера?"

Невелика зміна, але це великий крок у напрямку мислення програміста.


22. Подивімося на всю програму ще раз

Наша початкова програма виглядала так:

public class Main {

    public static void main(String[] args) {
        System.out.println("Hello, InnoMarts!");
    }

}

На початку уроку вона здавалася загадковою.

Тепер ми вже розуміємо досить багато.

public class Main

створює клас Main.

public static void main(String[] args)

визначає точку входу програми.

System.out.println(...)

виводить щось у консоль.

"Hello, InnoMarts!"

це String.

;

завершує інструкцію.

А:

{ }

визначають блоки коду.

Непогано як для Уроку 2.


🎓 Чого ти навчився

У цьому уроці ти дізнався:

Найголовніше:

Тепер ти можеш самостійно створити, запустити, змінити, зламати та виправити просту Java-програму. ☕

Це вже справжній прогрес.


Що далі?

Ми вже вміємо писати Java-код.

Але за лаштунками все ще відбувається щось важливе.

Коли ти натискаєш:

Run

як:

Main.java

перетворюється на запущену програму?

Що насправді створює Java-компілятор?

Що таке bytecode?

Що саме робить JVM?

І чому одна й та сама Java-програма може працювати на Windows, Linux та macOS?

Саме це ми розберемо в наступному уроці.

Далі → Урок 3: Як Java запускає твій код