Первая простая программа
После обсуж дения объектно-ориентированного ф ундамента Java имеет
смысл рассм отреть несколько фактических программ на Java. Д авайте начнем
с компиляции и запуска короткого прим ера программы, код которой показан
ниже. Вы увидите, что это требует чуть большего объем а работы , чем может
показаться.
/*
Простаяпрогра^анаJava.
НазовитеэтотфайлExample.java.
*/
class Example{
//Программаначинаетсясвызоваmain().
public static void main(String[] args) {
System.out.println("ПростаяпрограмманаязыкеJava.");
}
}
На заметку! В приведенных далее описаниях предполагается, что вы используете стандартный
комплект разработчика Java SE Development М (JDK), предлагаемый компанией Oracle.
(Доступны также версии с открытым кодом.) В случае применения интегрированной среды
разработки (integrated development environment - IDE) вам придется следовать другой про
цедуре компиляции и запуска программ на Java. За подробными сведениями обращайтесь в
документацию по IDE-cpeдe.
Ввод кода программы
Д л я некоторых компьютерных язы ков им я файла, содержащего исходны й
код программы, не имеет значения. О днако с Java дело обстоит иначе. Первое,
что вы должны узнать о Java — имя, которое вы назначаете файлу с исходным
кодом, очень важно. В рассматриваемом примере именем файла с исходны м
кодом должно быть E xam ple, ja v a и вот причина.
Файл с исходным кодом в Java официально называется единицей компиляции.
Он представляет собой текстовый файл, который содержит (помимо прочего)
одно или больш ее число определений классов. (Пока будем использовать фай
лы с исходным кодом, содержащие только один класс.) Компилятор Java тр е
бует, чтобы в имени ф айла с исходным кодом применялось расширение . ja v a .
Взглянув на программу, вы увидите, что именем определенного в ней клас
са является Exam ple. Это не совпадение. В Java весь код должен находиться
внутри класса. По соглашению им я главного класса долж но совпадать с име
нем файла, содержащ его программу. Вы также должны удостовериться в том,
что прописные буквы в имени файла и в имени класса соответствую т друг
другу. Причина связана с чувствительностью к регистру языка Java. В данный
м омент соглашение о том, что имена файлов соответствую т именам классов,
может показаться деспотическим. Тем не менее, такое соглашение упрощ ает
п о м е р ж к у и организацию ваших программ. Более того, как вы увидите далее
в книге, в некоторых случаях оно будет обязательным.
Компиляция программы
Чтобы ском пилировать программ у Exam ple, запустите компилятор ja v a c ,
указав в командной строке имя файла с исходным кодом:
C :\> ja v a c E x a rn p le .ja v a
К ом пилятор j a v a c создает файл по имени E xam ple. c l a s s с байт-кодом
программы. Как обсуж далось ранее, байт-код Java является промеж уточным
представлением программы, содержащ им инструкции, которые будет выпол
нять виртуальная машина Java (JVM). Таким образом, результатом j a v a c не
будет код, которы й можно запускать напрямую.
Чтобы действительно запустить программу, вам придется воспользовать
ся загрузчиком прилож ений Java под названием j ava. Д ля этого передайте
ему в качестве аргумента командной строки имя Example:
C :\> ja v a Exam ple
Выполнение программ ы приводит к отображ ению следующего вывода:
Простая п р о г р а ^ а на языке J a v a .
Когда исходный код Java компилируется, каждый отдельный класс поме
щ ается в собственны й вы ходной файл, имеющий имя класса и расш ирение
. c l a s s . Вот почему рекомендуется назначать файлам с исходны м кодом Java
имя, совпадающ ее с именем класса, который они содерж ат — имя файла с
исходным кодом будет совпадать с именем файла . c l a s s . При запуске j ava,
как только что было показано, фактически указы вается имя класса, который
необходимо выполнить. Загрузчик приложений будет автоматически искать
файл с таким именем и расш ирением . c l a s s . В случае нахождения файла он
выполнит код, содержащ ийся в указанном классе.
На заметку! Начиная с JDK 11, в Java есть возможность запуска некоторых типов простых программ
прямо из файла с исходным кодом без явного вызова j a v a c . Такая методика может оказать
ся полезной в ряде ситуаций; она описана в приложении В. В настоящей книге предполагает
ся, что вы применяете описанный выше нормальный процесс компиляции.
Первая простая программа
После обсуж дения объектно-ориентированного ф ундамента Java имеет
смысл рассм отреть несколько фактических программ на Java. Д авайте начнем
с компиляции и запуска короткого прим ера программы, код которой показан
ниже. Вы увидите, что это требует чуть большего объем а работы , чем может
показаться.
/*
Простаяпрогра^анаJava.
НазовитеэтотфайлExample.java.
*/
class Example{
//Программаначинаетсясвызоваmain().
public static void main(String[] args) {
System.out.println("ПростаяпрограмманаязыкеJava.");
}
}
На заметку! В приведенных далее описаниях предполагается, что вы используете стандартный
комплект разработчика Java SE Development М (JDK), предлагаемый компанией Oracle.
(Доступны также версии с открытым кодом.) В случае применения интегрированной среды
разработки (integrated development environment - IDE) вам придется следовать другой про
цедуре компиляции и запуска программ на Java. За подробными сведениями обращайтесь в
документацию по IDE-cpeдe.
Ввод кода программы
Д л я некоторых компьютерных язы ков им я файла, содержащего исходны й
код программы, не имеет значения. О днако с Java дело обстоит иначе. Первое,
что вы должны узнать о Java — имя, которое вы назначаете файлу с исходным
кодом, очень важно. В рассматриваемом примере именем файла с исходны м
кодом должно быть E xam ple, ja v a и вот причина.
Файл с исходным кодом в Java официально называется единицей компиляции.
Он представляет собой текстовый файл, который содержит (помимо прочего)
одно или больш ее число определений классов. (Пока будем использовать фай
лы с исходным кодом, содержащие только один класс.) Компилятор Java тр е
бует, чтобы в имени ф айла с исходным кодом применялось расширение . ja v a .
Взглянув на программу, вы увидите, что именем определенного в ней клас
са является Exam ple. Это не совпадение. В Java весь код должен находиться
внутри класса. По соглашению им я главного класса долж но совпадать с име
нем файла, содержащ его программу. Вы также должны удостовериться в том,
что прописные буквы в имени файла и в имени класса соответствую т друг
другу. Причина связана с чувствительностью к регистру языка Java. В данный
м омент соглашение о том, что имена файлов соответствую т именам классов,
может показаться деспотическим. Тем не менее, такое соглашение упрощ ает
п о м е р ж к у и организацию ваших программ. Более того, как вы увидите далее
в книге, в некоторых случаях оно будет обязательным.
Компиляция программы
Чтобы ском пилировать программ у Exam ple, запустите компилятор ja v a c ,
указав в командной строке имя файла с исходным кодом:
C :\> ja v a c E x a rn p le .ja v a
К ом пилятор j a v a c создает файл по имени E xam ple. c l a s s с байт-кодом
программы. Как обсуж далось ранее, байт-код Java является промеж уточным
представлением программы, содержащ им инструкции, которые будет выпол
нять виртуальная машина Java (JVM). Таким образом, результатом j a v a c не
будет код, которы й можно запускать напрямую.
Чтобы действительно запустить программу, вам придется воспользовать
ся загрузчиком прилож ений Java под названием j ava. Д ля этого передайте
ему в качестве аргумента командной строки имя Example:
C :\> ja v a Exam ple
Выполнение программ ы приводит к отображ ению следующего вывода:
Простая п р о г р а ^ а на языке J a v a .
Когда исходный код Java компилируется, каждый отдельный класс поме
щ ается в собственны й вы ходной файл, имеющий имя класса и расш ирение
. c l a s s . Вот почему рекомендуется назначать файлам с исходны м кодом Java
имя, совпадающ ее с именем класса, который они содерж ат — имя файла с
исходным кодом будет совпадать с именем файла . c l a s s . При запуске j ava,
как только что было показано, фактически указы вается имя класса, который
необходимо выполнить. Загрузчик приложений будет автоматически искать
файл с таким именем и расш ирением . c l a s s . В случае нахождения файла он
выполнит код, содержащ ийся в указанном классе.
На заметку! Начиная с JDK 11, в Java есть возможность запуска некоторых типов простых программ
прямо из файла с исходным кодом без явного вызова j a v a c . Такая методика может оказать
ся полезной в ряде ситуаций; она описана в приложении В. В настоящей книге предполагает
ся, что вы применяете описанный выше нормальный процесс компиляции.
Подробный анализ первого примера программы
Н есмотря на довольно небольш ой разм ер программы E x am p le. j ava, она
содержит несколько основных характеристик, присущих всем программам на
Java. Д авайте займемся исследованием каж дой части программы.
П рограмма начинается со следующих строк:
/*
Простая програ^а на Java.
Назовите этот файл Example .jav a .
*/
Строки представляю т собой комментарий. Как и больш инство других язы
ков программирования, Java позволяет вводить примечания в файл с исходным
кодом программы . Компилятор игнорирует содерж имое комментариев. На
самом деле ком ментарий описывает или объясняет работу программы лю бо
му, кто читает ее исходный код. В данном случае комментарий описывает про
грамму и напоминает, что исходный ф айл должен назы ваться E xam ple. j a va.
Конечно, в реальных прилож ениях ком м ентарии обы чно объясняю т, как ра
ботает какая-то часть программы или что делает конкретная функция.
В Java поддерж иваю тся три стиля комментариев. Комментарий в начале
программы назы вается многострочным. Комментарии такого типа должны
начинаться с символов /* и заканчиваться символами * /. Все, что находится
между этими двумя парами символов, ком пилятор игнорирует. Как следует
из названия, многострочны й комментарий может занимать несколько строк.
Ниже показана следующая строка кода в программе:
c la ss Example {
В строке с помощью ключевого слова c l a s s определяется новый класс.
Идентификатор Exam ple является именем класса. Все определение класса,
вклю чая всех его членов, будет находиться меж ду открываю щ ей фигурной
скобкой ( {) и закрываю щ ей фигурной скобкой (}) . В данный м омент не слиш
ком беспокойтесь о деталях класса помимо того, что в Java вся активность
программы происходит внутри класса. Это одна из причин, по которой все
программы на Java (по крайней мере, слегка) объектно-ориентированы .
Следующая строка в программ е содерж ит однострочный комментарий:
/ / Программа начинается с вызова main() .
Вы видите второй тип комментариев, поддерж иваемых в Java. О дностроч
ный комментарий начинается с символов / / и простирается до конца стро
ки. Как правило, программисты применяют многострочные комментарии для
длинных примечаний, а однострочные — для кратких построчных описаний.
К омментарии третьего типа, которы е назы ваю тся документирующими, о б
суж дается в разделе “Комментарии" далее в главе.
Вот следующая строка кода:
public s t a t i c void m ain (S trin g [] args) {
Глава
Первая простая программа
После обсуж дения объектно-ориентированного ф ундамента Java имеет
смысл рассм отреть несколько фактических программ на Java. Д авайте начнем
с компиляции и запуска короткого прим ера программы, код которой показан
ниже. Вы увидите, что это требует чуть большего объем а работы , чем может
показаться.
/*
Простаяпрогра^анаJava.
НазовитеэтотфайлExample.java.
*/
class Example{
//Программаначинаетсясвызоваmain().
public static void main(String[] args) {
System.out.println("ПростаяпрограмманаязыкеJava.");
}
}
На заметку! В приведенных далее описаниях предполагается, что вы используете стандартный
комплект разработчика Java SE Development М (JDK), предлагаемый компанией Oracle.
(Доступны также версии с открытым кодом.) В случае применения интегрированной среды
разработки (integrated development environment - IDE) вам придется следовать другой про
цедуре компиляции и запуска программ на Java. За подробными сведениями обращайтесь в
документацию по IDE-cpeдe.
Ввод кода программы
Д л я некоторых компьютерных язы ков им я файла, содержащего исходны й
код программы, не имеет значения. О днако с Java дело обстоит иначе. Первое,
что вы должны узнать о Java — имя, которое вы назначаете файлу с исходным
кодом, очень важно. В рассматриваемом примере именем файла с исходны м
кодом должно быть E xam ple, ja v a и вот причина.
Файл с исходным кодом в Java официально называется единицей компиляции.
Он представляет собой текстовый файл, который содержит (помимо прочего)
одно или больш ее число определений классов. (Пока будем использовать фай
лы с исходным кодом, содержащие только один класс.) Компилятор Java тр е
бует, чтобы в имени ф айла с исходным кодом применялось расширение . ja v a .
Взглянув на программу, вы увидите, что именем определенного в ней клас
са является Exam ple. Это не совпадение. В Java весь код должен находиться
внутри класса. По соглашению им я главного класса долж но совпадать с име
нем файла, содержащ его программу. Вы также должны удостовериться в том,
что прописные буквы в имени файла и в имени класса соответствую т друг
другу. Причина связана с чувствительностью к регистру языка Java. В данный
м омент соглашение о том, что имена файлов соответствую т именам классов,
может показаться деспотическим. Тем не менее, такое соглашение упрощ ает
п о м е р ж к у и организацию ваших программ. Более того, как вы увидите далее
в книге, в некоторых случаях оно будет обязательным.
Компиляция программы
Чтобы ском пилировать программ у Exam ple, запустите компилятор ja v a c ,
указав в командной строке имя файла с исходным кодом:
C :\> ja v a c E x a rn p le .ja v a
К ом пилятор j a v a c создает файл по имени E xam ple. c l a s s с байт-кодом
программы. Как обсуж далось ранее, байт-код Java является промеж уточным
представлением программы, содержащ им инструкции, которые будет выпол
нять виртуальная машина Java (JVM). Таким образом, результатом j a v a c не
будет код, которы й можно запускать напрямую.
Чтобы действительно запустить программу, вам придется воспользовать
ся загрузчиком прилож ений Java под названием j ava. Д ля этого передайте
ему в качестве аргумента командной строки имя Example:
C :\> ja v a Exam ple
Выполнение программ ы приводит к отображ ению следующего вывода:
Простая п р о г р а ^ а на языке J a v a .
Когда исходный код Java компилируется, каждый отдельный класс поме
щ ается в собственны й вы ходной файл, имеющий имя класса и расш ирение
. c l a s s . Вот почему рекомендуется назначать файлам с исходны м кодом Java
имя, совпадающ ее с именем класса, который они содерж ат — имя файла с
исходным кодом будет совпадать с именем файла . c l a s s . При запуске j ava,
как только что было показано, фактически указы вается имя класса, который
необходимо выполнить. Загрузчик приложений будет автоматически искать
файл с таким именем и расш ирением . c l a s s . В случае нахождения файла он
выполнит код, содержащ ийся в указанном классе.
На заметку! Начиная с JDK 11, в Java есть возможность запуска некоторых типов простых программ
прямо из файла с исходным кодом без явного вызова j a v a c . Такая методика может оказать
ся полезной в ряде ситуаций; она описана в приложении В. В настоящей книге предполагает
ся, что вы применяете описанный выше нормальный процесс компиляции.
Подробный анализ первого примера программы
Н есмотря на довольно небольш ой разм ер программы E x am p le. j ava, она
содержит несколько основных характеристик, присущих всем программам на
Java. Д авайте займемся исследованием каж дой части программы.
П рограмма начинается со следующих строк:
/*
Простая програ^а на Java.
Назовите этот файл Example .jav a .
*/
Строки представляю т собой комментарий. Как и больш инство других язы
ков программирования, Java позволяет вводить примечания в файл с исходным
кодом программы . Компилятор игнорирует содерж имое комментариев. На
самом деле ком ментарий описывает или объясняет работу программы лю бо
му, кто читает ее исходный код. В данном случае комментарий описывает про
грамму и напоминает, что исходный ф айл должен назы ваться E xam ple. j a va.
Конечно, в реальных прилож ениях ком м ентарии обы чно объясняю т, как ра
ботает какая-то часть программы или что делает конкретная функция.
В Java поддерж иваю тся три стиля комментариев. Комментарий в начале
программы назы вается многострочным. Комментарии такого типа должны
начинаться с символов /* и заканчиваться символами * /. Все, что находится
между этими двумя парами символов, ком пилятор игнорирует. Как следует
из названия, многострочны й комментарий может занимать несколько строк.
Ниже показана следующая строка кода в программе:
c la ss Example {
В строке с помощью ключевого слова c l a s s определяется новый класс.
Идентификатор Exam ple является именем класса. Все определение класса,
вклю чая всех его членов, будет находиться меж ду открываю щ ей фигурной
скобкой ( {) и закрываю щ ей фигурной скобкой (}) . В данный м омент не слиш
ком беспокойтесь о деталях класса помимо того, что в Java вся активность
программы происходит внутри класса. Это одна из причин, по которой все
программы на Java (по крайней мере, слегка) объектно-ориентированы .
Следующая строка в программ е содерж ит однострочный комментарий:
/ / Программа начинается с вызова main() .
Вы видите второй тип комментариев, поддерж иваемых в Java. О дностроч
ный комментарий начинается с символов / / и простирается до конца стро
ки. Как правило, программисты применяют многострочные комментарии для
длинных примечаний, а однострочные — для кратких построчных описаний.
К омментарии третьего типа, которы е назы ваю тся документирующими, о б
суж дается в разделе “Комментарии" далее в главе.
Вот следующая строка кода:
public s t a t i c void m ain (S trin g [] args) {
Глава
Д анная строка начинает м етод m ain (). Как объяснялось в предыдущем
комментарии, с этой строки програм м а начнет вы полняться. О бы чно про
грамма на Java начинает выполнение с вы зова m ain (). Полностью осознать
смысл каждой части строки пока невозможно, т.к. для этого нужно хорош о
понимать подход Java к инкапсуляции. О днако поскольку такая строка кода
присутствует в большинстве прим еров в первой части книги, давайте кратко
рассмотрим каждую часть.
Ключевое слово p u b l i c представляет собой модификатор доступа, кото
рый позволяет программисту управлять видимостью член о в класса. Когда
член класса предварен ключевым словом p u b i c , доступ к нему может быть
получен из кода за пределами класса, где он объявлен. (Противоположностью
p u b i c является ключевое слово p r i v a t e , которое предотвращ ает использо
вание члена кодом, определенным вне класса.) В данном случае м етод m ain ( )
должен быть объявлен как p u b i c , потом у что при запуске программ ы его
потребуется вы зы вать в коде за пределами класса. Ключевое слово s t a t i c
позволяет вы зывать m ain () без создания конкретного экзем пляра класса.
Причина в том, что m ain () вы зы вается машиной JVM до создания каких-ли
бо объектов. Ключевое слово v o id п росто сообщ ает компилятору, что m i n ()
не возвращает значение. Как вы увидите, методы также могут возвращать
значения. Если все это кажется немного запутанным, не переживайте — все
концепции будут подробно рассмотрены в последую щ их главах.
Как уже упоминалось, метод m ain () вызывается при запуске приложения
Java. И м ейте в виду, что язы к Java чувствителен к регистру, а потому M ain
отличается от m ain. Важно понимать, что компилятор Java будет компилиро
вать классы, не содержащие м етода m ain (). Но у ja v a не будет возмож ности
запускать такие классы. Таким образом , если вы наберете M ain вместо main,
то ком пилятор все равно скомпилирует вашу программу, но ja v a сообщ ит об
ошибке, поскольку не смож ет найти метод m ain ().
Лю бая инф ормация, которую вам нужно передать методу, получается пе
ременными, указанны м и в наборе круглы х скобок после им ени метода. Такие
переменны е называю тся параметрами. Даже когда для метода не требую т
ся параметры, вам все равно понадобится указать пустые круглы е скобки.
В m ain () всего один параметр, хоть и сложный. Конструкция S t r i n g [ ] a r g s
объявляет параметр по имени a r g s , которы й представляет собой массив эк
зем пляров класса S t r i n g . (М ассивы — это совокупности похожих объектов.)
Объекты типа S t r i n g хранят строки символов. В данном случае a r g s полу
чает лю бы е аргументы командной строки, присутствующие при вы полнении
программы. В рассматриваемой программ е такая инф ормация не использует
ся, но другие программы, показанные далее в этой книге, будут ее потреблять.
Последним символом в строке является {, который сигнализирует о на
чале тела m ain (). Весь код, содерж ащ ийся в методе, будет находиться между
открывающей и закрывающ ей ф игурны м и скобками метода.
Еще один момент: m ain () — это просто стартовая точка для вашей про
граммы. Слож ная програм м а будет иметь десятки классов, только один из
которых должен иметь метод m ain (), чтобы начать работу. Кроме того, для
Первая простая программа
После обсуж дения объектно-ориентированного ф ундамента Java имеет
смысл рассм отреть несколько фактических программ на Java. Д авайте начнем
с компиляции и запуска короткого прим ера программы, код которой показан
ниже. Вы увидите, что это требует чуть большего объем а работы , чем может
показаться.
/*
Простаяпрогра^анаJava.
НазовитеэтотфайлExample.java.
*/
class Example{
//Программаначинаетсясвызоваmain().
public static void main(String[] args) {
System.out.println("ПростаяпрограмманаязыкеJava.");
}
}
На заметку! В приведенных далее описаниях предполагается, что вы используете стандартный
комплект разработчика Java SE Development М (JDK), предлагаемый компанией Oracle.
(Доступны также версии с открытым кодом.) В случае применения интегрированной среды
разработки (integrated development environment - IDE) вам придется следовать другой про
цедуре компиляции и запуска программ на Java. За подробными сведениями обращайтесь в
документацию по IDE-cpeдe.
Ввод кода программы
Д л я некоторых компьютерных язы ков им я файла, содержащего исходны й
код программы, не имеет значения. О днако с Java дело обстоит иначе. Первое,
что вы должны узнать о Java — имя, которое вы назначаете файлу с исходным
кодом, очень важно. В рассматриваемом примере именем файла с исходны м
кодом должно быть E xam ple, ja v a и вот причина.
Файл с исходным кодом в Java официально называется единицей компиляции.
Он представляет собой текстовый файл, который содержит (помимо прочего)
одно или больш ее число определений классов. (Пока будем использовать фай
лы с исходным кодом, содержащие только один класс.) Компилятор Java тр е
бует, чтобы в имени ф айла с исходным кодом применялось расширение . ja v a .
Взглянув на программу, вы увидите, что именем определенного в ней клас
са является Exam ple. Это не совпадение. В Java весь код должен находиться
внутри класса. По соглашению им я главного класса долж но совпадать с име
нем файла, содержащ его программу. Вы также должны удостовериться в том,
что прописные буквы в имени файла и в имени класса соответствую т друг
другу. Причина связана с чувствительностью к регистру языка Java. В данный
м омент соглашение о том, что имена файлов соответствую т именам классов,
может показаться деспотическим. Тем не менее, такое соглашение упрощ ает
п о м е р ж к у и организацию ваших программ. Более того, как вы увидите далее
в книге, в некоторых случаях оно будет обязательным.
Компиляция программы
Чтобы ском пилировать программ у Exam ple, запустите компилятор ja v a c ,
указав в командной строке имя файла с исходным кодом:
C :\> ja v a c E x a rn p le .ja v a
К ом пилятор j a v a c создает файл по имени E xam ple. c l a s s с байт-кодом
программы. Как обсуж далось ранее, байт-код Java является промеж уточным
представлением программы, содержащ им инструкции, которые будет выпол
нять виртуальная машина Java (JVM). Таким образом, результатом j a v a c не
будет код, которы й можно запускать напрямую.
Чтобы действительно запустить программу, вам придется воспользовать
ся загрузчиком прилож ений Java под названием j ava. Д ля этого передайте
ему в качестве аргумента командной строки имя Example:
C :\> ja v a Exam ple
Выполнение программ ы приводит к отображ ению следующего вывода:
Простая п р о г р а ^ а на языке J a v a .
Когда исходный код Java компилируется, каждый отдельный класс поме
щ ается в собственны й вы ходной файл, имеющий имя класса и расш ирение
. c l a s s . Вот почему рекомендуется назначать файлам с исходны м кодом Java
имя, совпадающ ее с именем класса, который они содерж ат — имя файла с
исходным кодом будет совпадать с именем файла . c l a s s . При запуске j ava,
как только что было показано, фактически указы вается имя класса, который
необходимо выполнить. Загрузчик приложений будет автоматически искать
файл с таким именем и расш ирением . c l a s s . В случае нахождения файла он
выполнит код, содержащ ийся в указанном классе.
На заметку! Начиная с JDK 11, в Java есть возможность запуска некоторых типов простых программ
прямо из файла с исходным кодом без явного вызова j a v a c . Такая методика может оказать
ся полезной в ряде ситуаций; она описана в приложении В. В настоящей книге предполагает
ся, что вы применяете описанный выше нормальный процесс компиляции.
Подробный анализ первого примера программы
Н есмотря на довольно небольш ой разм ер программы E x am p le. j ava, она
содержит несколько основных характеристик, присущих всем программам на
Java. Д авайте займемся исследованием каж дой части программы.
П рограмма начинается со следующих строк:
/*
Простая програ^а на Java.
Назовите этот файл Example .jav a .
*/
Строки представляю т собой комментарий. Как и больш инство других язы
ков программирования, Java позволяет вводить примечания в файл с исходным
кодом программы . Компилятор игнорирует содерж имое комментариев. На
самом деле ком ментарий описывает или объясняет работу программы лю бо
му, кто читает ее исходный код. В данном случае комментарий описывает про
грамму и напоминает, что исходный ф айл должен назы ваться E xam ple. j a va.
Конечно, в реальных прилож ениях ком м ентарии обы чно объясняю т, как ра
ботает какая-то часть программы или что делает конкретная функция.
В Java поддерж иваю тся три стиля комментариев. Комментарий в начале
программы назы вается многострочным. Комментарии такого типа должны
начинаться с символов /* и заканчиваться символами * /. Все, что находится
между этими двумя парами символов, ком пилятор игнорирует. Как следует
из названия, многострочны й комментарий может занимать несколько строк.
Ниже показана следующая строка кода в программе:
c la ss Example {
В строке с помощью ключевого слова c l a s s определяется новый класс.
Идентификатор Exam ple является именем класса. Все определение класса,
вклю чая всех его членов, будет находиться меж ду открываю щ ей фигурной
скобкой ( {) и закрываю щ ей фигурной скобкой (}) . В данный м омент не слиш
ком беспокойтесь о деталях класса помимо того, что в Java вся активность
программы происходит внутри класса. Это одна из причин, по которой все
программы на Java (по крайней мере, слегка) объектно-ориентированы .
Следующая строка в программ е содерж ит однострочный комментарий:
/ / Программа начинается с вызова main() .
Вы видите второй тип комментариев, поддерж иваемых в Java. О дностроч
ный комментарий начинается с символов / / и простирается до конца стро
ки. Как правило, программисты применяют многострочные комментарии для
длинных примечаний, а однострочные — для кратких построчных описаний.
К омментарии третьего типа, которы е назы ваю тся документирующими, о б
суж дается в разделе “Комментарии" далее в главе.
Вот следующая строка кода:
public s t a t i c void m ain (S trin g [] args) {
Глава
Д анная строка начинает м етод m ain (). Как объяснялось в предыдущем
комментарии, с этой строки програм м а начнет вы полняться. О бы чно про
грамма на Java начинает выполнение с вы зова m ain (). Полностью осознать
смысл каждой части строки пока невозможно, т.к. для этого нужно хорош о
понимать подход Java к инкапсуляции. О днако поскольку такая строка кода
присутствует в большинстве прим еров в первой части книги, давайте кратко
рассмотрим каждую часть.
Ключевое слово p u b l i c представляет собой модификатор доступа, кото
рый позволяет программисту управлять видимостью член о в класса. Когда
член класса предварен ключевым словом p u b i c , доступ к нему может быть
получен из кода за пределами класса, где он объявлен. (Противоположностью
p u b i c является ключевое слово p r i v a t e , которое предотвращ ает использо
вание члена кодом, определенным вне класса.) В данном случае м етод m ain ( )
должен быть объявлен как p u b i c , потом у что при запуске программ ы его
потребуется вы зы вать в коде за пределами класса. Ключевое слово s t a t i c
позволяет вы зывать m ain () без создания конкретного экзем пляра класса.
Причина в том, что m ain () вы зы вается машиной JVM до создания каких-ли
бо объектов. Ключевое слово v o id п росто сообщ ает компилятору, что m i n ()
не возвращает значение. Как вы увидите, методы также могут возвращать
значения. Если все это кажется немного запутанным, не переживайте — все
концепции будут подробно рассмотрены в последую щ их главах.
Как уже упоминалось, метод m ain () вызывается при запуске приложения
Java. И м ейте в виду, что язы к Java чувствителен к регистру, а потому M ain
отличается от m ain. Важно понимать, что компилятор Java будет компилиро
вать классы, не содержащие м етода m ain (). Но у ja v a не будет возмож ности
запускать такие классы. Таким образом , если вы наберете M ain вместо main,
то ком пилятор все равно скомпилирует вашу программу, но ja v a сообщ ит об
ошибке, поскольку не смож ет найти метод m ain ().
Лю бая инф ормация, которую вам нужно передать методу, получается пе
ременными, указанны м и в наборе круглы х скобок после им ени метода. Такие
переменны е называю тся параметрами. Даже когда для метода не требую т
ся параметры, вам все равно понадобится указать пустые круглы е скобки.
В m ain () всего один параметр, хоть и сложный. Конструкция S t r i n g [ ] a r g s
объявляет параметр по имени a r g s , которы й представляет собой массив эк
зем пляров класса S t r i n g . (М ассивы — это совокупности похожих объектов.)
Объекты типа S t r i n g хранят строки символов. В данном случае a r g s полу
чает лю бы е аргументы командной строки, присутствующие при вы полнении
программы. В рассматриваемой программ е такая инф ормация не использует
ся, но другие программы, показанные далее в этой книге, будут ее потреблять.
Последним символом в строке является {, который сигнализирует о на
чале тела m ain (). Весь код, содерж ащ ийся в методе, будет находиться между
открывающей и закрывающ ей ф игурны м и скобками метода.
Еще один момент: m ain () — это просто стартовая точка для вашей про
граммы. Слож ная програм м а будет иметь десятки классов, только один из
которых должен иметь метод m ain (), чтобы начать работу. Кроме того, для
некоторых типов программ метод m ain ( ) вообще не нужен. Тем не менее, для
больш инства программ, приведенных в книге, метод m ain () обязателен.
Ниже показана следующая строка кода. О братите внимание, что она рас
положена внутри m ain ( ) .
System.out.println("ПростаяпрограмманаязыкеJava.");
Здесь на экран выводится строка "П ростая программа на язы ке J a v a ."
вместе с символом новой строки. Вывод в действительности осущ ествляется
встроенны м методом p r i n t l n (). В данном случае метод p r i n t l n () отобра
жает переданную ему строку. В дальнейшем вы увидите, что p r i n t l n () можно
применять и для отображ ения других типов информации. Строка начинается
с S y stem . o u t. Хотя подробно объяснить это сейчас слишком сложно, вкратце
отметим, что S y stem является предопределенным классом, обеспечивающим
доступ к системе, а o u t — выходным потоком, подключенным к консоли.
Вероятно, вы уже догадались, что консольный вывод (и ввод) нечасто ис
пользуется в больш инстве реальных прилож ений Java. П оскольку больш ин
ство современны х вычислительных сред являю тся графическими по своей
природе, консольны й ввод-вы вод прим еняется в основном в просты х ути
литах, демонстрационны х программах и серверном коде. Позже в книге вы
узнаете о других способах генерирования вывода с использованием Java. Но
пока мы продолж им прим енять методы консольного ввода-вы вода.
О братите внимание, что оператор p r i n t l n () заверш ается точкой с запя
той. В Java точка с запятой присутствует в конце многих операторов. Как вы
увидите, точка с запятой — важ ная часть синтаксиса Java.
П ервы й символ } в програм м е заканчивает м етод m ain (), а последний
символ } заверш ает определение класса Example.
В т о р а я п р о с т а я п р о г р а м м а
Вероятно, никакая другая концепция не является более фундаментальной
для языка программирования, нежели переменная. Возможно, вам уже извест
но, что переменная представляет собой именованную ячейку памяти, которой
ваша программа может присвоить значение. Значение переменной можно из
менять во время выполнения программы. В следующей программе показано,
как объявлять и присваивать значение переменной. В программе также иллю
стрируется р яд новых аспектов консольного вывода. Как следует из коммента
риев в начале программы, файл потребуется назвать Exam ple2 . ja v a .
/*
Ещеодинкороткийпример.
НазовитеэтотфайлExarnple2.java.
*/
class Exarnple2{
public static voidmain(String[] args) {
int nurn; //объявлениепеременнойпоимениnurn
nurn=100; //присваиваниепеременнойnurnзначения100
System.out.println("Значениеnurn: "+nurn);
В т о р а я п р о с т а я п р о г р а м м а
Вероятно, никакая другая концепция не является более фундаментальной
для языка программирования, нежели переменная. Возможно, вам уже извест
но, что переменная представляет собой именованную ячейку памяти, которой
ваша программа может присвоить значение. Значение переменной можно из
менять во время выполнения программы. В следующей программе показано,
как объявлять и присваивать значение переменной. В программе также иллю
стрируется р яд новых аспектов консольного вывода. Как следует из коммента
риев в начале программы, файл потребуется назвать Exam ple2 . ja v a .
/*
Ещеодинкороткийпример.
НазовитеэтотфайлExarnple2.java.
*/
class Exarnple2{
public static voidmain(String[] args) {
int nurn; //объявлениепеременнойпоимениnurn
nurn=100; //присваиваниепеременнойnurnзначения100
System.out.println("Значениеnurn: "+nurn);
num=num*2;
System.out.print("Значениеnum*2: ");
System.out.println(num);
}
}
Запустив программу, вы получите следующий вывод:
Значениеnum: 100
Значениеnum*2: 200
Д авайте выясним, почему генерируется такой вывод. Ниже приведена но
вая строка в программе:
int num; //объявлениепеременнойпоимениnum
В строке объявляется целочисленная переменная по имени num. П одобно
многим другим язы кам переменные в Java до своего использования должны
бы ть объявлены .
Вот как вы глядит общ ая ф орма объявления переменной:
тип имя-переменной;
Здесь тип указывает тип объявляем ой переменной, а им я-перем енной —
имя переменной. При желании объявить более одной переменной заданного
типа мож ете прим енять список имен переменных, отделенных друг от друга
запяты ми. В Java определено несколько типов данных, вклю чая целочислен
ный, символьный и числовой с плавающей точкой. Ц елочисленный тип ука
зы вается с помощью ключевого слова i n t . Следующая строка в программе:
num=100; //присваиваниепеременнойnumзначения100
обеспечивает присваивание переменной num значения 100. О перация присва
ивания в Java обозначается одиночным знаком равенства.
В показанной далее строке кода вы водится значение num, предваренное
строкой "Значение num: ”.
System.out.println("Значениеnum: "+num);
Знак + в операторе приводит к тому, что значение num добавляется к стр о
ке, которая ему предшествует, после чего результирую щ ая строка вы водит
ся. (На самом деле значение num сначала преобразуется из целочисленного
в эквивалентное строковое и затем объединяется с предш ествую щ ей ему
строкой. Этот процесс подробно описан далее в книге.) Такой подход можно
обобщ ить. Используя операцию +, вы можете объединять в одном операторе
p r i n t l n () столько элементов, сколько хотите.
В следующей строке кода переменной num присваивается значение num,
умноженное на 2. Как и в больш инстве других языков, операция умножения
в Java обозначается символом *. После вы полнения строки кода переменная
num будет содержать значение 200.
Ниже показаны очередные две строки программы:
System.out.print ("Значениеnum*2: ");
System.out.println (num);
*
Демонстрация работы оператора i f .
Назовите этот файл IfS am ple.java.
*/
c la s s IfSample [
public s t a t i c void m ain (S trin g [] args) {
in t х, у;
х = 10;
у = 2 0;
if ( x < у) S y s te m .o u t.p rin tln ("Значение х меньше у ");
х = х * 2;
i f (x == у) S y s te m .o u t.p rin tln ("Теперь значение х равно у");
х = х * 2;
i f (x > у) S y s te m .o u t.p rin tln ("Теперь значение х больше у") ;
/ / Здесь ничего не отобразится
if ( x == у) S y s te m .o u t.p rin tln ("Этот вывод вы не увидите");
}
}
В результате выполнения программы генерируется следующий вывод:
Значение х меньше у
Теперь значение х равно у
Теперь значение х больше у
С программой связан еще один момент. В строке
in t х, у;
объявляю тся две переменные, х и у, посредством списка с разделителем-за
пятой.
Цикл f o r
О ператоры циклов — важ ная часть почти лю бого языка програм м ирова
ния, поскольку они обеспечиваю т возм ож ность м ногократного вы полнения
некоторой задачи. Как вы увидите в главе 5, язы к Java предлагает мощный на
бор конструкций циклов. Возможно, наиболее универсальным является цикл
fo r. Вот простейш ая ф орма цикла fo r:
f o r (инициализация; условие; итерация) оператор;
В своей самой распространенной форме часть и н и ц и а л и з а ц и я цикла
устанавливает переменную управления циклом в начальное значение. Часть
у с л о в и е представляет собой булевское выражение, которое проверяет пере
менную управления циклом. Если результат проверки оказывается истинным,
тогда о п е р а т о р выполняется, а цикл f o r продолжает работу. При лож ном ре
зультате проверки цикл заверш ается. Выражение и тер ац и я определяет, каким
образом переменная управления циклом изменяется на каждой итерации цик
ла. Далее приведена короткая программа, иллюстрирующая работу цикла f o r:
/*Демонстрация работы цикла fo r.
Назовите этот файл F orT est.jav a.
*/
7 4 Часть 1. Язык Java
class ForTest {
public sta tic void main(String [] args) {
int х;
for(x = О; x<lO; х = x+l)
System .out.println("Значение х: ” + х) ;
}
}
Программа генерирует такой вывод:
Значение х: О
Значение х: 1
Значение х: 2
Значение х: 3
Значение х: 4
Значение х: 5
Значение х: 6
Значение х: 7
Значение х: 8
Значение х: 9