2. Первая программа (Java. Базовый курс)


Канал в Telegram

2. Первая программа (Java. Базовый курс)


Дата публикации 14.01.2021



После того, как все необходимые инструменты для разработки установлены, можно начать знакомство с языком программирования Java и попробовать написать свою самую первую программу!

Первая программа:

Лучший способ начать знакомство с языком программирования - посмотреть как его можно применить на практике, поэтому сейчас напишем самую первую программу на языке Java. Откройте среду разработки и создайте новый проект, нажав на кнопку New Project:

Создание нового проекта в IntelliJ IDEA

Далее левой колонке нужно выбрать пункт Java, кроме этого необходимо убедиться что в поле Project SDK указана 11-я версия JDK, иначе нужно добавить путь до установленной JDK выбрав пункт Add JDK в выпадающем списке. После нажмите кнопку Next:
Создание нового проекта в IntelliJ IDEA

В новом окне поставьте галку Create project from template и выберите пункт Command Line App, а затем нажмите кнопку Next:

Создание нового проекта в IntelliJ IDEA

Далее нужно указать имя проекта в поле Project name (в моём случае это HelloWorld), в Project locations - расположение проекта в файловой системе (я оставил значение по умолчанию), а в Base package необходимо указать имя пакета (я указал ru.akutepov, но можно задать любое произвольное имя в формате [домен 1-го уровня].[домен 2-го уровня]) и нажать кнопку Finish:

Создание нового проекта в IntelliJ IDEA

В результате откроется окно с созданным проектом:

Создание нового проекта в IntelliJ IDEA

Среда разработки сгенерировала простой проект с одним классом, который называется Main и одним методом main. Фактически это уже простейшая программа и её можно запустить, правда она пока ничего не делает. Прежде чем я детально расскажу что тут происходит, немного допишу программу:
Программа Hello World

Ну вот, теперь первая программа готова, но прежде чем её запустить, давайте разберём получившийся код:

В 1-й строке оператор package определяет для класса Main пакет с названием ru.akutepov. Обратите особое внимание на точку с запятой в конце строки - в Java она обязательна и служит для разделения команд:

package ru.akutepov;

Пакеты в Java являются пространством имён, по которым можно группировать различные классы. Это необходимо делать для того чтобы избежать конфликтов имён между разными классами с одинаковым названием и структурировать код. Например, если приложение большое и содержит сотни классов, то лучше если эти классы будут распределены по разным пакетам, в зависимости от своего функционала - так их проще будет отыскать. Название пакета состоит из нескольких элементов, разделённых точкой, каждому элементу пакета будет соответствовать своя папка в файловой системе. В моём случае класс Main находится в папке akutepov, а папка akutepov находится в папке ru

Далее во 2-й строчке идёт отступ в одну строку, который служит для разделения различных частей кода. Отступы необходимо использовать для того, чтобы код было проще читать. Теоретически всю программу можно записать в одну строку и она прекрасно будет работать, но на практике за это могут и побить, так что лучше не рисковать.

В 3-й строке идёт объявление класса Main. Класс является базовым элементом объектно-ориентированного программирования в языке Java и определяет структуру объекта и его методы. Методы, в свою очередь, содержат логику работы программы.

public class Main {

В начале идёт модификатор public (с модификаторами мы ещё подробно познакомимся), он говорит о том что к классу Main можно обращаться из любого пакета. Простыми словами - я создал публичный класс. Далее с помощью ключевого слова class объявляется новый класс с именем Main. В теории можно задать другое имя класса, но при этом оно должно совпадать с названием файла, в котором этот класс находится (в моём случае Main.java). 

Важно: В соответствии с конвенцией именования, имена классов должны быть существительными и записываются в смешанном регистре с первой заглавной буквой (PascalCase). Старайтесь именовать классы коротко и ясно и используйте целые слова, избегая сокращений (Кроме случаев, когда сокращение гораздо распространеннее, чем полная версия, как URL или HTML)

После объявление класса открывается фигурная скобка, после которой начинается тело класса. Фигурные скобки в Java служат для разбиения кода на блоки и являются обязательными к использованию. Количество открытых и закрытых фигурных скобок при этом должно быть одинаковым, иначе программа не соберётся.

В моей программе тело класса начинается с многострочного комментария, который описывает суть метода main и его входные параметры:

/**
* Метод, с которого начинается выполнение программы
* @param args список параметров, переданных на вход как аргументы командной строки
*/

Комментарии никак не влияют на работу программы, их используют для описания работы частей кода, чтобы код был более удобочитаемым. Комментарий, приведенный в начале программы, называется многострочным. Этот вид комментариев должен начинаться со знаков /* и оканчиваться знаками */. Весь текст, расположенный между этими двумя парами символов, игнорируется компилятором.

После комментария в 9-й строке идёт объявление метода main:

public static void main(String[] args) {

Выполнение любой программы на Java всегда начинается с метода main. Данный метод имеет строго определённый способ объявления, так что очень важно ничего не забыть. В начале идёт модификатор доступа public, который говорит нам что метод main можно вызывать из вне. Далее идёт модификатор static, который делает метод main независимым от объектов класса Main, то есть метод можно будет вызвать без инициализации объекта класса. Это необходимо потому, что метод main вызывается виртуальной машиной JVM перед созданием любых объектов. После модификатора static идёт ключевое слово void, которое сообщает компилятору что метод main не возвращает никаких значений. После void идёт название самого метода (в нашем случае main) и в круглых скобках описаны параметры, которые метод принимает на вход. Метод main всегда принимает массив строк, содержащий набор параметров, которые могут передаваться как аргументы командной строки. Далее открывается фигурная скобка и начинается тело метода.

Важно: В соответствии с конвенцией именования, в Java имена методов должны быть глаголами, в смешанном регистре, начиная со строчной буквы, но с использованием заглавной буквы для каждого последующего слова (camelCase)

В 10-й строке вы можете видеть ещё один вид комментариев - однострочный комментарий. В Java однострочные комментарии обозначаются двойным слешем:

// Вывод в консоль строки "Hello world!"

А в 11-й строке кода на консоль выводится строка Hello world!. Все строковые константы в Java заключаются в двойные кавычки, таким образом они отделяются от самого кода. Метод println отображает переданную ему символьную строку и делает переход на новую строку. System это предопределенный класс, предоставляющий доступ к системе, а out - поток вывода, связанный с консолью. Таким образом можно вывести в консоль абсолютно любую строку, попробуйте поэкспериментировать:

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

В 12-й и 13-й строке фигурные скобки закрывают тело метода main и тело класса Main

Хочу сразу обратить ваше внимание на ещё одну важную вещь - отступы слева. Они позволяют структурировать код и визуально выделить кодовые блоки. Обычно длина отступа равна 4 пробельным символам, например для того чтобы выделить метод main, нужно отступить от начала строки на 4 пробела, для того чтобы выделить тело метода main - отступаем ещё на 4 пробела и так далее. Таким образом прекрасно видно какой блок кода куда вложен и меньше шансов допустить ошибку.

После того, как подробно разобрали код программы, настало время её запустить. Сделать это можно несколькими способами. Самый простой из них - выбрать в главном меню пункт Run > Run ‘Main’ (комбинация клавиш Shift + F10), либо нажать на зелёный треугольник на панели инструментов:

Запуск программы

Результат выполнения программы появится в нижней части экрана, на вкладке Run. Если всё сделано правильно, то мы увидим надпись Hello world!:

Запуск программы

Поздравляю, Вы только что написали и запустили свою первую программу на языке Java! Но желательно уметь запускать программу не только в среде разработки, верно? Для этого есть второй способ, который несколько сложнее. Для начала необходимо открыть терминал (в Windows это приложение Командная строка), либо воспользоваться встроенным терминалом среды разработки (вкладка Terminal):

Терминал

Если вы воспользовались встроенным терминалом среды разработки, то по умолчанию уже открыта директория проекта, остаётся только с помощью команды cd перейти в папку src (как показано на скриншоте). Если же открыли терминал своей операционной системы, то предварительно нужно зайти в директорию проекта.

Далее нам необходимо скомпилировать наш класс Main.java, для этого выполните команду:

javac ru\akutepov\Main.java

Обратите внимание на то, что путь к классу Main должен быть как у вас в проекте. Если ваши пакеты называются по другому то нужно это учесть. После этого программа будет скомпилирована в байт-код, который может выполнять JVM (Java Virtual Machine) и в проекте появится новый файл - Main.class. Именно в файлах с расширением .class хранится скомпилированный байт-код.

Чтобы запустить нашу программу, необходимо выполнить команду:

java ru.akutepov.Main

Тут также нужно использовать свои названия пакетов, как и в предыдущем примере. Если всё сделано правильно, то в консоль будет выведена строка Hello world!

 

Домашнее задание:

  1. Повторите на своём компьютере всё то, что я проделал на уроке - напишите программу Hello World. Запустите программу всеми указанными способами, в том числе и через терминал, и убедитесь что она работает.
  2. Вместо строки Hello World! выведите в консоль своё имя.
  3. Кроме метода println существует ещё метод print, который осуществляет вывод в консоль, но без перехода на следущую строку. Ваша задача, используя оба метода, вывести 3 строки Hello World! в столбик и 3 строки Hello World! в строку через пробел. Поэксперементируйте с методами вывода строк в консоль.


< Предыдущий урок     Следующий урок >