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 иногда быстрее С++, который сразу компилируется в машинный код и может использовать только самые распространение команды процессора.

2. Типовые ошибки при компиляции

Скорость и оптимизация кода нам пока что не сильно важна, а вот что важно, так это то, что компилятор проверяет вашу программу на ошибки. Он проверяет код на корректность и не пустит его дальше, если нашёл даже маленькую ошибку.

Пример ошибки:

Вы пытаетесь присвоить число переменной, которая может хранить только текст.

String userName = 42; // Ой! Нельзя так.

Компилятор сразу выдаст ошибку, что типы не соответствуют: Cannot implicitly convert type 'int' to '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 даже выделяют такие слова!

Программисты шутят

// Я не отвечаю за этот код. Меня заставили написать его против моего желания.
// Дорогой, я_из_будущего! Пожалуйста, прости меня за этот код.
// Если я ещё раз увижу такое, мне придётся начать носить на работу оружие.
// Если это условие когда-нибудь выполнится, пожалуйста, сообщите мне по тел. ххх-ххх-ххх за вознаграждение.
// Дорогой программист:
//
// Когда ты закончишь «оптимизировать» эту подпрограмму
// и поймёшь, насколько большой ошибкой было делать это,
// пожалуйста, увеличь счётчик внизу как предупреждение
// для следующего парня:
//
// количество_часов_потраченных_здесь = 42
// Когда я начинал это писать, только Бог и я понимали, что я делаю. 
// Сейчас остался только Бог
// Иногда мне кажется, что компилятор игнорирует все мои комментарии
// Я посвящаю весь свой код, всю работу своей жене Дарлин, которой 
// придётся содержать меня, наших троих детей и собаку, когда 
// это пойдёт в продакшн.

Да, комментарии могут быть очень смешными. Ведь их пишут живые люди.

1
Задача
JAVA 25 SELF, 1 уровень, 5 лекция
Недоступна
Заметки для себя 📝
Заметки для себя 📝
1
Задача
JAVA 25 SELF, 1 уровень, 5 лекция
Недоступна
Блок кода для тестирования 🛠️
Блок кода для тестирования 🛠️
1
Задача
JAVA 25 SELF, 1 уровень, 5 лекция
Недоступна
Исправление ошибок 🐛
Исправление ошибок 🐛
1
Опрос
Команды и первая программа, 1 уровень, 5 лекция
Недоступен
Команды и первая программа
Команды и первая программа
Комментарии (15)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Riga Уровень 25
17 октября 2025
Integer хранит не целое число а ссылку на объект?
Нэй Уровень 1
22 октября 2025
В отличие от int, объектная переменная класса Integer хранит ссылку на объект. У примитивных типов данных есть т.н. классы-оболочки.
16 октября 2025
/* Комментарий удален */
Noi G (Noi) Уровень 2
22 октября 2025
"Программа не должна выводить ничего в консоль после исправления." Ты должен закомментировать все внутри глобальной переменной
Дмитрий Уровень 4
15 октября 2025
Что не так с задачей "Исправление ошибок"? Как ее вообще пройти? Эталонное решение даже посмотрел. Все так же, а не проходит все равно
Evgeniy Kostenkov Уровень 2
5 октября 2025
комментируешь Systemout - ошибка раскомментируй, раскомментируешь - ошибка, закомментируй
Noi G (Noi) Уровень 2
22 октября 2025
Попробуй внимательно прочитать условия
Владислав Уровень 29
30 сентября 2025
В задаче "Исправление ошибок" жуткий тупняк. Проверяйте пробелы.
Yury Lyutov Уровень 18
7 сентября 2025
Я может что то не понял, вопрос номер 7 - что нельзя использовать в имени переменной, и там все нельзя в целом то, разве нет?
Ivan Уровень 5
9 сентября 2025
Цифры можно, если не стоят в начале названия переменной
Anonymous #3491453 Уровень 15
13 сентября 2025
Сам вопрос сформулирован неверно. Так как получается, что верных ответов 3 из 4, а выбрать можно только 1 ответ. Думаю, что правильный вопрос был бы - "Что из перечисленного можно использовать в имени переменной?".
Vitalii Уровень 13 Expert
6 сентября 2025
очепятка в 1.Java-компилятор в последнем абзаце, последнем предложении: "Именно поэтому Java иногда быстрее С++, который сразу компилируется в машинный код и может использовать только самые распространЁННЫЕ команды процессора."
Артемий Уровень 66
4 сентября 2025
Многострочные комментарии добавляются с помощью сочетания клавиш Ctrl + Shift + /.
Lans_N Уровень 31
3 сентября 2025
сочетание клавиш ctrl + / позволяет закомментировать/раскомментировать выделенную строку. можно выделять несколько строк.
Sergey Efimov Уровень 1
3 сентября 2025
по-моему в задаче "исправление ошибок" есть ошибка) по условиям программа не должна выводить ничего в консоль после исправления, а она выводит