JavaRush /Курси /JAVA 25 SELF /Компілятор і коментарі

Компілятор і коментарі

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

1. Java‑компілятор

До речі, ви ще не раз почуєте, що беззаперечна перевага Java над іншими мовами — це кросплатформність. Що це таке і як це працює? Почнімо здалеку.

Річ у тім, що компʼютер уміє виконувати лише найпростіші команди.

Для собак є команди «Поруч», «Лапу» та інші — почувши їх, собака робить щось важливе. У компʼютера роль таких команд відіграють числа: кожна команда закодована певним числом (його ще називають машинним кодом).

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

Зазвичай програміст пише програму мовою програмування, а потім запускає компілятор, який на основі написаних програмістом файлів із кодом формує єдиний файл із машинним кодом — кінцеву (скомпільовану) програму.

  • Програма мовою C++
  • Компілятор
  • Програма, що складається з машинних кодів
Етапи компіляції для мови C++

У результаті отримана програма одразу може виконуватися на компʼютері. Мінус цього підходу в тому, що код отриманої програми сильно залежить від процесора й операційної системи. Програма, скомпільована під Windows, не працюватиме на телефоні з Android.

Якщо ви написали програму для Android, то в операційній системі Windows вона не запуститься!

А от у Java підхід інший — значно гнучкіший.

  • Програма мовою Java
  • Java‑компілятор
  • Програма, що складається зі спеціальних кодів (байт‑код)
  • Java VM
  • Програма, що складається з машинних кодів
Етапи компіляції для мови Java

Компілятор Java не компілює всі класи в одну програму з машинних кодів. Замість цього він компілює кожен клас окремо — і не в машинні коди, а у спеціальний проміжний код (байт‑код). Компіляція в машинний код виконується під час запуску програми.

А хто ж компілює програму в машинний код під час її запуску?

Для цього є спеціальна програма під назвою JVM (Java Virtual Machine) — віртуальна машина Java. Спочатку запускають її, а потім — програму, що складається з байт‑коду. І вже JVM перед виконанням вашої програми компілює її в машинний код.

Якщо у вас потужний процесор, який підтримує ширший набір машинних команд, то під час «другої компіляції» згенерується машинний код з урахуванням саме вашого процесора та ОС. Саме тому Java інколи швидша за C++, який одразу компілюється в машинний код і може використовувати лише найпоширеніші команди процесора.

2. Типові помилки під час компіляції

Поки що швидкість і оптимізація коду — не головне. Важливіше інше: компілятор перевіряє вашу програму на помилки. Він перевіряє код на коректність і не пропустить його далі, якщо знайде навіть дрібну помилку.

Приклад помилки:

Ви намагаєтеся присвоїти число змінній, яка може зберігати лише текст.

String userName = 42; // Ой! Так не можна.

Компілятор одразу видасть помилку про невідповідність типів: Неможливо неявно перетворити тип «int» на «String».

Інший приклад — описка в назві методу println:

System.out.printline("Привіт!"); // Помилка в назві методу

Компілятор скаже: «Немає такого методу — перевірте синтаксис!»

Як читати помилки?

Більшість компіляторів підказують, де в коді помилка, і іноді навіть пропонують варіанти виправлення. Не бійтеся помилок: кожна з них — це крок до осяяння й перемоги над вашим внутрішнім босом.

3. Коментарі

Отже, уявіть: ви пишете складну програму. Усе працює, ви — геній! Але за місяць ви відкриваєте той самий код і... нічого не розумієте. Кілька рядків коду тут, дивна змінна там. У голові лише: «Це явно писав хто завгодно, але не я!» Ось тут і виручають коментарі.

Коментарі — це як нотатки на полях підручника або підписи на холодильнику («Пиво. Не пити. На ранок!»). Компілятор їх ігнорує, а люди — навпаки. Коментарі дають змогу пояснити сенс коду, позначити важливі деталі і навіть «вимикати» шматки програм, не видаляючи їх.

Важливо: жоден компілятор не читає ваші коментарі — вони цілковито ігноруються!

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

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

Приклад:

System.out.println("Привіт, світе!"); 	// Це виводить привітання на екран

Ось тут // Це виводить привітання на екран — коментар. Якщо в коді незрозуміло, навіщо потрібен рядок, так і пишіть!

Ще приклад:

int x = 42; 	// Значення віку програміста

Можна писати однорядкові коментарі й на окремих рядках:

// Ініціалізація змінної з іменем користувача
String userName = "Вася";

Майже як репліки у сценарії: коментар пояснює — навіщо і чому.

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

Що робити, якщо накопичилося чимало всього? Тоді стануть у пригоді багаторядкові коментарі. Для цього є багаторядкові коментарі, які починаються з /* і закінчуються на */. Усе між цими символами ігнорується компілятором, навіть якщо це кілька рядків.

Приклад:

/*
  Тут ми виводимо імʼя користувача на екран.
  Якщо імені немає, напишемо "Гість".
*/
System.out.println("Введіть ваше імʼя:");

Або так:

int age = 18; /* Початкове значення віку
                 для нового користувача */

Увага: не можна вкладати одні багаторядкові коментарі в інші. Не намагайтеся бути хитрішими за компілятор — це не спрацює.

Ілюстрація:

Тип Синтаксис Приклад
Однорядковий
// коментар
int x = 1; // пояснення
Багаторядковий
/* тут що завгодно */
/* тут можна пояснити усе, що хочете */

4. Приклади з життя

«Вимкнення» рядка коду:

Буває, що ви тимчасово хочете не виконувати якийсь фрагмент коду. Коментарі тут якраз до місця:

// System.out.println("Текст, який тимчасово не потрібен");

Рядок залишився, але компілятор його не «бачить».

Позначки TODO і FIXME

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

// TODO: зробити перевірку на порожнє введення
// FIXME: ця функція неправильно рахує суму

Багато редакторів та IDE навіть підсвічують такі слова!

Програмісти жартують

// Я не відповідаю за цей код. Мене змусили написати його всупереч моєму бажанню.
// Дорогий, я_з_майбутнього! Будь ласка, пробач мене за цей код.
// Якщо я ще раз таке побачу, мені доведеться почати носити на роботу зброю.
// Якщо ця умова коли-небудь виконається, будь ласка, повідомте мені за тел. +380 XX XXX XX XX за винагороду.
// Дорогий програміст:
//
// Коли ви закінчите «оптимізувати» цю підпрограму
// і зрозумієте, наскільки великою помилкою було це робити,
// будь ласка, збільште лічильник внизу як попередження
// для наступного колеги:
//
// кількість_годин_витрачених_тут = 42
// Коли я починав це писати, лише Бог і я розуміли, що я роблю. 
// Зараз залишився лише Бог.
// Іноді мені здається, що компілятор ігнорує всі мої коментарі.
// Я присвячую весь свій код, усю роботу своїй дружині Дарлін, якій 
// доведеться утримувати мене, наших трьох дітей і собаку, коли 
// це піде в продакшн.

Так, коментарі можуть бути дуже кумедними. Адже їх пишуть живі люди.

1
Опитування
Команди та перша програма, рівень 1, лекція 5
Недоступний
Команди та перша програма
Команди та перша програма
Коментарі (5)
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ
nemarinaad Рівень 11
25 вересня 2025
завдання Виправлення помилок 🐛 дивно перевіряється //int number = 10; int number = 20; тільки таку відповідь приймає за правильну, однак якщо коментувати присвоєння 20 в інт, то видає помилку, при чому не вказуючи на те, що саме з цією строкою щось не так
27 листопада 2025
мабуть виправили
Ярослав Рівень 3
2 січня 2026
Наче ж все логічно.. Бо так у нас виходить дві змінні з одною назвою number.. а локально не можна создавать дві змінні з однією назвою.. от якби було number1 і number2 то було б ок. Це якби призначали отак.. int number = 10; number = number + 20; тоді намана. А так ми создавали нову змінну з однаковим ім'ям шо не гуд.
nemarinaad Рівень 11
3 січня 2026
це зрозуміло, але логічніше було б, щоб правильною була відповідь з коментуванням або int number = 10, або int number = 20 однак перевірка видавала помилку при коментуванні int number = 20, якщо залишалось int number = 10
Ярослав Рівень 3
4 січня 2026
Тоді це дуже дивно..