9.A Первое Java приложение (50/50)
![](https://img.golos.io/proxy/https://i.imgur.com/6lPTjqi.jpg)
![](https://img.golos.io/proxy/https://i.imgur.com/yrEVMdI.jpg)
Фортран: Дорогие друзья, мы продолжаем курс программирования на Java. Мы начнем с примера приложения, которое просто выводит текст. Потом мы сделаем программу, которая принимает 2 числа от пользователя, суммирует их и выводит результат на экран. Вы научитесь, как заставить компьютер выполнять арифметические операции и сохранять результат для дальнейшего использования. Еще один из начальных примеров продемонстрирует приложение, которое принимает решение. Приложение сравнит 2 числа, затем отобразит сообщение, которое продемонстрирует результат сравнения. Позднее мы будем редактировать, компилировать и запускать код в IntelliJ IDEA, но вначале мы будем использовать напрямую команды JDK для компилирования и запуска программ, а код писать в простом тестовом редакторе наподобие Notepad++.
Java приложение – это компьютерная программа, которая выполняется, когда вы используете команду java
для запуска виртуальной машины Java (JVM). Дальше мы еще обсудим, как компилировать и запускать Java приложение. Для начала мы рассмотрим простое Java приложение, которое отображает строку текста. Ниже приведен код программы, а за ним следует вывод этой программы на экран после ее выполнения.
![](https://img.golos.io/proxy/https://i.imgur.com/pEoU8Mn.jpg)
Привет ГОЛОС-у и любителям Java!
В коде программы пронумерованы строки. Я их добавил для удобства изложения материала, и они не являются частью Java программы. Этот пример иллюстрирует несколько важных особенностей Java. Мы увидим, что именно строка 9 осуществляет вывод на экран фразы Привет ГОЛОС-у и любителям Java!
.
Для улучшения читабельности кода программы используются комментарии. Компилятор Java игнорирует комментарии, и они не влияют на работу программы. Мы будем начинать каждый файл программы с комментария, указывающего на название этого файла, как комментарий в строке 1
// WelcomeGolos.java
Когда нам в коде встречаются две косые черты //
, это означает, что весь текст до конца строки будет являться комментарием. Такой комментарий называется однострочным, но он не обязательно должен начинаться с новой строки. Он может быть вставлен и посередине строки (например, как в строках 10 и 11).
Вторым комментарием в файле мы будем описывать назначение этого файла, как в строке 2
// Программа, выводящая текст
Java также поддерживает многострочные комментарии (они еще иногда называются традиционными или классическими), которые могут располагаться сразу на нескольких строках
/* Многострочный комментарий */
Такой комментарий ограничен разделителями /*
и */
. Компилятор игнорирует весь текст между подобными скобками. Java поддерживает многострочные и однострочные комментарии, которые берут свое начало в таких языках, как C и C++, соответственно. Мы в основном будем использовать однострочные комментарии.
В Java также применяются и комментарии третьего типа — Javadoc (джавадоки). Они заключаются между разделителями /**
и */
. Компилятор игнорирует весь текст между этими разделителями. Javadoc позволяет вам встраивать документацию по программе напрямую в программный код. В промышленном программировании на языке Java именно такие комментарии являются предпочтительными. Утилита javadoc
(часть JDK) считывает комментарии Javadoc и использует их для подготовки программной документации в HTML формате. Позднее мы еще подробно рассмотрим тему создания документации с использованием комментариев Javadoc и применением утилиты javadoc
.
![](https://img.golos.io/proxy/https://i.imgur.com/9r22Qyz.jpg)
Воробей: А что если я забуду закрыть комментарий?
![](https://img.golos.io/proxy/https://i.imgur.com/Nk9jXQ0.jpg)
Фортран: Забыв поставить один из разделителей многострочного или Javadoc комментария, ты допустишь синтаксическую ошибку. Синтаксическая ошибка случается, когда компилятор встречает код, который нарушает правила языка Java, т.е. его синтаксис. Эти правила подобны грамматическим правилам естественного языка, которые определяют структуру предложения. Синтаксические ошибки также называются ошибками компиляции, потому что их обнаруживает компилятор во время своей работы. Когда встречается синтаксическая ошибка, компилятор выдает сообщение об ошибке. Необходимо устранить все ошибки компиляции перед тем, как ваша программа сможет быть успешно скомпилирована.
![](https://img.golos.io/proxy/https://i.imgur.com/k6rcHiX.jpg)
Икс: Хочу добавить, что в некоторых организациях требуют, чтобы каждый файл программы начинался с комментария, который обозначает назначение файла, его автора, дату и время, когда этот файл последний раз был изменен.
![](https://img.golos.io/proxy/https://i.imgur.com/da8jLJI.jpg)
Фортран: Да, это так. Кроме того, при написании новых программ или изменении существующих следите, чтобы ваши комментарии не устаревали. Программисты часто меняют код, чтобы исправить ошибки или расширить функционал. В этом случае нужно обновлять и комментарии. Это позволит легче модифицировать программу в дальнейшем. Если обновить код, а комментарии оставить без изменений, то будущие программисты, которые будут работать с вашим кодом, будут делать неверные предположения о работе кода, что может привести к ошибкам и даже проблемам с безопасностью.
Продолжим рассматривать код кашей первой программы. Строка 3 – это пустая строка. Пустые строки, символы пробела и табуляция упрощают чтение программы. Вместе они известны, как пробельные символы. Компилятор их все игнорирует. Используйте пустые строки и пробелы для повышения читабельности кода программы.
Перейдем к такому понятию, как объявление класса, которое начинается в строке 4
public class WelcomeGolos
Данная строка является началом объявления класса WelcomeGolos
. Каждая Java программа состоит, по крайней мере, из одного класса, который должен определить программист. С ключевого слова class
, за которым сразу следует имя класса (WelcomeGolos
), начинается объявление класса. Ключевые слова зарезервированы языком Java и всегда пишутся маленькими буквами.
На первых порах каждый класс, который мы будем определять, будет начинаться с ключевого слова public
. Пока мы просто будем писать слово public
. Позднее мы обсудим тему публичных и не публичных классов.
Публичный класс должен быть размещен в файле, который имеет имя класса и расширение .java
(ИмяКласса.java
), так класс WelcomeGolos
должен быть сохранен в файле WelcomeGolos.java
.
![](https://img.golos.io/proxy/https://i.imgur.com/b6BIvhC.jpg)
Воробей: А если я нарушу это правило?
![](https://img.golos.io/proxy/https://i.imgur.com/gPikwPD.jpg)
Фортран: Если имя файла публичного класса не соответствует в точности имени класса, то произойдет ошибка компиляции.
Принято имена классов начинать с большой буквы, а также начинать с большой буквы каждое новое слово в названии класса (например, MyClassName
). Имя класса – это идентификатор. Идентификатор – это последовательность символов, состоящая из букв, цифр, подчеркиваний (_) и знака доллара ($), которая не начинается с цифры и не содержит пробелов. Примеры допустимых идентификаторов – WelcomeGolos1
, $val
, n_outputField2
, _val
и button5
. Имя 5button
недопустимо, т.к. начинается с цифры, а имя output field
недопустимо, т.к. содержит пробел. Обычно, если идентификатор не начинается с большой буквы, то это не имя класса. Java чувствительна к регистру, т.е. большие и маленькие буквы различаются, поэтому, например, идентификатор Val
- это не тоже самое, что идентификатор val
, хотя оба они допустимы.
Левая фигурная скобка {
(в строке 5) является началом объявления тела класса. Соответственно, правая фигурная скобка }
(в строке 11), является признаком завершения тела класса.
![](https://img.golos.io/proxy/https://i.imgur.com/NofMddC.jpg)
Воробей: А для чего строки с 6 по 10 имеют отступы? Эти отступы обязательно должны присутствовать?
![](https://img.golos.io/proxy/https://i.imgur.com/yFc2Vw4.jpg)
Фортран: Нет, в языке Java, в отличие от языка Python, например, отступы не являются частью синтаксиса, и их использование не носит обязательный характер. Однако я все же советую использовать отступы для того, чтобы визуально выделить тело класса. Такой формат подчеркивает структуру класса и делает его более читабельным. Я использую один символ табуляции для того, чтобы сделать отступ, однако многие программисты предпочитают использовать конкретное число пробелов (от 2-ух до 4-ех). Чтобы вы не выбрали, вы должны придерживаться этого правила.
Хочу дать совет начинающим программистам. Когда вы открываете левую фигурную скобку {
, сразу же ставьте правую закрывающую фигурную скобку }
, затем разместите курсор между скобками и сделайте отступ, чтобы начать печатать тело. В этом случае вы избежите ошибок с потерянными скобками. Многие IDE вставляют закрывающую фигурную скобку за вас сразу же, как вы ставите левую фигурную скобку. Не соответствие количества открывающих и закрывающих скобок является синтаксической ошибкой.
![](https://img.golos.io/proxy/https://i.imgur.com/mGALq1y.jpg)
Икс: Хочу отметить, что большинство IDE сами делают отступы в коде. Клавиша Tab
может быть использована для создания отступов. Вы можете настроить свою IDE, чтобы указать количество пробелов, которым будет соответствовать нажатие клавиши Tab
.
![](https://img.golos.io/proxy/https://i.imgur.com/ptwGsWV.jpg)
Фортран: Теперь перейдем к объявлению метода в коде. Строка 6
// Главный метод main, с которого начинается выполнение Java программы
является однострочным комментарием, указывающим на назначение строк 7–10 в программном коде. А строка 7
public static void main(String[] args)
является стартовой точкой каждого Java приложения. Скобки после идентификатора main
показывают, что этот идентификатор обозначает программный блок, который называется методом. Объявление Java классов обычно содержит один или более методов. Для Java приложения, один из методов должен быть назван main
и должен быть определен как в строке 7, в противном случае виртуальная машина Java (JVM) не станет выполнять приложение. Методы выполняют задачи и могут возвращать результат после завершения выполнения этих задач. Мы позже объясним назначение ключевого слова static
. Ключевое слово void
показывает, что этот метод не возвращает никакого результата. Мы разберем методы, возвращающие результат позднее. Пока же просто повторяйте строку, объявляющую метод main
, в ваших Java приложениях. В строке 7 String[] args
в скобках является обязательной частью метода main
— к этой теме мы также вернемся позднее.
Левая фигурная скобка в строке 8 открывает тело метода main
. А соответствующая правая фигурная скобка закрывает это тело (см. строку 10). Строка 9 в теле метода имеет еще один отступ. Делайте отступы тела методов от открывающих и закрывающих скобок. Это выделяет структуру метода и делает код в нем более читабельным.
Наконец, мы подошли к самой главной части нашей программы: вывод текста на экран при помощи System.out.println. Строка 9
System.out.println("Привет ГОЛОС-у и любителям Java!");
отдает компьютеру команду на выполнение действия, а именно на отображения символов, заключенных между двойными кавычками (сами кавычки при этом не отображаются). Символы кавычек и символы между ними являются строковым литералом, иногда его называют просто строкой. Пробельные символы внутри строки не игнорируются компилятором. Строковые литералы не могу располагаться на нескольких строках в коде программы.
Объект System.out
, который предопределен за вас, известен как стандартный объект вывода. Он позволяет приложению Java отображать информацию в командной строке, из которой приложение было запущено. Для Microsoft Windows командная строка – это приложение Command Prompt. Для Mac OS X / Linux, командная строка называется терминалом (terminal) или шеллом (shell). Чаще всего программисты называют все это просто командной строкой.
Метод System.out.println
отображает (печатает или выводит) строку текста в командную строку. Строковый литерал в скобках в строке 9 является аргументом этого метода. Когда метод System.out.println
завершает свою работу, он выводит курсор (курсор – это место, где будет отображен следующий символ) в начале следующей строки. Это очень похоже на то, как если бы вы нажали клавишу Enter
при наборе текста в текстовом редакторе — курсор появляется в начале следующей строки документа.
Вся строка 9, включая метод System.out.println
, его аргумент "Привет ГОЛОС-у и любителям Java!"
в скобках и точку с запятой (;), называется утверждением или выражением. Метод обычно состоит из одного или более выражений для выполнения поставленной перед ним задачи. Большинство выражений заканчиваются точной с запятой. Когда выражение в строке 9 выполнится, оно выведет текст Привет ГОЛОС-у и любителям Java!
в командную строку.
Когда вы учитесь программировать, иногда полезно "ломать" работающую программу, чтобы посмотреть на сообщения о синтаксических ошибках, которые найдет компилятор. Эти сообщения не всегда точно указывают на проблемное место в коде. Однако когда вы сталкиваетесь с ошибкой, компилятор подскажет, в чем может быть проблема. Попробуйте удалить точку с запятой или скобку в нашей программе, потом попробуйте перекомпилировать программу, чтобы увидеть сообщение об ошибке. О компиляции программы на языке Java мы поговорим чуть ниже.
![](https://img.golos.io/proxy/https://i.imgur.com/Ne1M1I2.jpg)
Икс: Хочу отметить, что когда компилятор находит синтаксическую ошибку, она может быть и не на той строке, на которую указывает компилятор. Для начала проверьте строку, о которой сообщил компилятор, а если там ошибки нет, то проверьте несколько предыдущих строк.
![](https://img.golos.io/proxy/https://i.imgur.com/s6c3THX.jpg)
Фортран: Спасибо за уточнение, Икс, продолжим. В качестве помощи начинающим программистам, я включил в код однострочные комментарии после закрывающих фигурных скобок, которые обозначают конец методов и классов. Например, в строке 10
} // конец метода main
где завершается метод main
, и в строке 11
} // конец класса WelcomeGolos
где заканчивается класс WelcomeGolos
. В дальнейшем мы иногда будем использовать такие комментарии, а иногда будем их опускать.
Пора поговорить о компилировании. У нас для этого все готово. Как уже было сказано, мы пока будем использовать JDK из командной строки, а не из IDE.
Для того чтобы скомпилировать программу откройте командную строку и перейдите в директорию с файлом программы. Скорее всего, в вашей операционной системе для перехода между директориями используется команда cd
. Для компилирования программы наберите следующую команду, находясь в папке с файлом WelcomeGolos.java
javac WelcomeGolos.java
Если программа не содержит ошибок компиляции, то в папке появится новый файл WelcomeGolos.class
(известный как файл класса WelcomeGolos
), содержащий платформонезависимый байткод нашей программы. Когда мы используем команду java
для выполнения приложения на конкретной платформе, виртуальная машина JVM будет преобразовывать этот байткод в команды, которые будут восприняты операционной системой и центральным процессором.
![](https://img.golos.io/proxy/https://i.imgur.com/4ousv37.jpg)
Икс: При использовании javac
если вы получите такие сообщения об ошибках как bad command or filename
, javac: command not found
или javac is not recognized as an internal or external command, operable program or batch file
, то это значит, что вы некорректно установили Java. Скорее всего, переменная окружения PATH
установлена неправильно. Для исправления данной проблемы обратитесь к статье об установке Java, которая была опубликована ранее. В некоторых операционных системах после изменения переменной PATH
может потребоваться перезагрузить компьютер или перезапустить командную строку, чтобы изменения вступили в силу.
![](https://img.golos.io/proxy/https://i.imgur.com/VpAFWKB.jpg)
Фортран: Если компилирование пройдет с ошибками, то имейте в виду, что каждое сообщение о синтаксической ошибке содержит имя файла и номер строки, в которой эта ошибка обнаружена. Например, WelcomeGolos.java:8
показывает, что ошибка найдена в строке 8 в файле WelcomeGolos.java
. Остальная часть этого сообщения предоставляет информацию о синтаксической ошибке.
Кроме того, сообщение об ошибке типа class WelcomeGolos is public, should be declared in a file named WelcomeGolos.java
скажет нам, что имя файла не соответствует имени публичного класса в этом файле.
Если вы внимательно набирали код программы и правильно установили переменную окружения PATH
, то после компиляции можно приступать к запуску программы WelcomeGolos
.
Для запуска программы в командной строке перейдите в директорию с файлом WelcomeGolos.class
. Затем введите команду
java WelcomeGolos
и нажмите Enter
. Эта команда запустит виртуальную машину JVM, которая загрузит файл WelcomeGolos.class
. При наборе команды опускается расширение файла .class
, в противном случае JVM не станет выполнять программу. JVM вызывает метод main
класса WelcomeGolos
. Затем выражение в строке 9 метода main
выведет на экран Привет ГОЛОС-у и любителям Java!
. Скриншот ниже показывает выполнение программы в командной строке Microsoft Windows.
![](https://img.golos.io/proxy/https://i.imgur.com/JaJSkQo.jpg)
Вот и все. Мы написали, скомпилировали и запустили наше первое приложение на языке Java.
![](https://img.golos.io/proxy/https://i.imgur.com/dIKHxVs.jpg)
Икс: Спасибо, профессор. В заключение хочу добавить, что если при попытке запуска приложения Java вы получите сообщение вида Exception in thread "main" java.lang.NoClassDefFoundError: WelcomeGolos
, то это значит, что переменная окружения CLASSPATH
установлена неправильно. Пожалуйста, тщательно изучите инструкции по установке переменной CLASSPATH
, которые были даны в более ранней статье. В некоторых системах вам вероятно потребуется перезагрузить компьютер или окно с командной строкой, для того чтобы изменения переменной CLASSPATH
вступили в силу.
P.S. Для ПАУК-а:
- Первая половина текста
- Вторая половина текста
- Картинка 1 - уникальна, хотя yandex нашел похожие
- Картинка 2 - уникальна
- Картинка 3 - уникальна