Иллюстрированный самоучитель по Java
ГЛАВА 1
Встроенные типы данных, операции над ними
-
Приступая к изучению нового языка,
полезно поинтересоваться, какие исходные данные могут обрабатываться средствами
этого языка, в каком виде их можно задавать, и какие стандартные средства
обработки этих данных заложены в язык. Это довольно скучное занятие, поскольку
в каждом развитом языке программирования множество типов данных и еще больше
правил их использования. Однако несоблюдение этих правил приводит к появлению
скрытых ошибок, обнаружить которые иногда бывает очень трудно. Ну что же,
в каждом ремесле приходится сначала "играть гаммы", и мы не можем
от этого уйти.
Все правила языка Java исчерпывающе
изложены в его спецификации, сокращенно называемой JLS. Иногда, чтобы понять,
как выполняется та или иная конструкция языка Java, приходится обращаться к
спецификации, но, к счастью, это бывает редко, правила языка Java достаточно
просты и естественны.
В этой главе перечислены примитивные
типы данных, операции над ними, операторы управления, и показаны "подводные
камни", которых следует избегать при их использовании. Но начнем, по традиции,
с простейшей программы.
Первая
программа на Java
По давней традиции, восходящей к
языку С, учебники по языкам программирования начинаются с программы "Hello,
World!". He будем нарушать эту традицию. В листинге 1.1 эта программа в
самом простом виде, записанная на языке Java.
Листинг 1.1.
Первая программа на языке Java;
class HelloWorld{
public static
void main(String[] args){
System.out.println("Hello,
XXI Century World!");
}
}
Вот и все, всего пять строчек! Но
даже на этом простом примере можно заметить целый ряд существенных особенностей
языка Java.
-
Всякая программа представляет
собой один или несколько классов, в этом простейшем примере только один
класс
(class).
-
Начало класса отмечается служебным
словом
class
, за которым следует имя класса, выбираемое
произвольно, в данном случае
Helloworld
. Все, что содержится
в классе, записывается в фигурных скобках и составляет
тело класса
(class
body).
-
Все действия производятся с помощью
методов обработки информации, коротко говорят просто
метод
(method).
Это название употребляется в языке Java вместо названия "функция",
применяемого в других языках.
-
Методы различаются по именам.
Один из методов обязательно должен называться
main
,
с него начинается выполнение программы. В нашей простейшей программе только
один метод, а значит, имя ему
main
.
-
Как и положено функции, метод
всегда выдает в результате (чаще говорят,
возвращает
(returns)) только
одно значение, тип которого обязательно указывается перед именем метода. Метод
может и не возвращать никакого значения, играя роль процедуры, как в нашем
случае. Тогда вместо типа возвращаемого значения записывается слово
void
,
как это и сделано в примере.
-
После имени метода в скобках,
через запятую, перечисляются
аргументы
(arguments) -или
параметры
метода. Для каждого аргумента указывается его тип и, через пробел, имя.
В примере только один аргумент, его тип — массив, состоящий из строк символов.
Строка символов — это встроенный в Java API тип
string
,
а квадратные скобки — признак массива. Имя массива может быть произвольным,
в примере выбрано имя
args
.
-
Перед типом возвращаемого методом
значения могут быть записаны
модификаторы
(modifiers). В примере их
два: слово
public
означает, что этот метод доступен
отовсюду; слово
static
обеспечивает возможность вызова
метода
main ()
в самом начале выполнения программы.
Модификаторы вообще необязательны, но для метода
main ()
они необходимы.
Замечание
В тексте этой книги после имени
метода ставятся скобки, чтобы подчеркнуть, что это имя именно метода, а не
простой переменной.
-
Все, что содержит метод,
тело
метода
(method body), записывается в фигурных скобках.
Единственное действие, которое выполняет
метод
main ()
в примере, заключается в вызове другого
метода со сложным именем
System.out.println
и передаче
ему на обработку одного аргумента, текстовой константы
"Hello,
2lth century world!"
. Текстовые константы записываются в кавычках,
которые являются только ограничителями и не входят в состав текста.
Составное имя
System.out.println
означает, что в классе
System
, входящем в Java API, определяется
переменная с именем
out
, содержащая экземпляры одного
из классов Java API, класса
PrintStream
, в котором есть
метод
println()
. Все это станет ясно позднее, а пока
просто будем писать это длинное имя.
Действие метода
println ()
заключается в выводе своего аргумента в выходной поток, связанный
обычно с выводом на экран текстового терминала, в окно
MS-DOS Prompt
или
Command Prompt
или
Xterm,
в зависимости от вашей системы. После
вывода курсор переходит на начало следующей строки экрана, на что указывает
окончание
ln
, слово println — сокращение слов print line.
В составе Java API есть и метод
print ()
, оставляющий
курсор в конце выведенной строки. Разумеется, это прямое влияние языка Pascal.
Сделаем сразу важное замечание.
Язык Java различает строчные и прописные буквы, имена
main,
Main, MAIN
различны с "точки зрения" компилятора Java. В примере
важно писать
String, System
с заглавной буквы, a
main
с маленькой. Но внутри текстовой константы неважно, писать
Century
или
century
, компилятор вообще не "смотрит"
на нее, разница будет видна только на экране.
Замечание
Язык Java различает прописные
и строчные буквы.
Свои имена можно записывать как
угодно, можно было бы дать классу имя
helloworid
или
helloworid
,
но между Java-программистами заключено соглашение, называемое "Code Conventions
for the Java Programming Language", хранящееся по адресу
http://java.sun.com/docs/codeconv/index.html
.
Вот несколько пунктов этого соглашения:
-
имена классов начинаются с прописной
буквы; если имя содержит несколько слов, то каждое слово начинается с прописной
буквы;
-
имена методов и переменных начинаются
со строчной буквы; если имя содержит несколько слов, то каждое следующее слово
начинается со строчной буквы;
-
имена констант записываются полностью
прописными буквами; если имя состоит из нескольких слов, то между ними ставится
знак подчеркивания.
Конечно, эти правила необязательны,
хотя они и входят в JLS, п. 6.8, но сильно облегчают понимание кода и придают
программе характерный для Java стиль.
Стиль определяют не только имена,
но и размещение текста программы по строкам, например, расположение фигурных
скобок: оставлять ли открывающую фигурную скобку в конце строки с заголовком
класса или метода или переносить на следующую строку? Почему-то этот пустяшный
вопрос вызывает ожесточенные споры, некоторые средства разработки, например
JBuilder, даже предлагают выбрать определенный стиль расстановки фигурных скобок.
Многие фирмы устанавливают свой, внутрифирменный стиль. В книге мы постараемся
следовать стилю "Code Conventions" и в том, что касается разбиения
текста программы на строки (компилятор же рассматривает всю программу как одну
длинную строку, для него программа — это просто последовательность символов),
и в том, что касается отступов (indent) в тексте.
Итак, программа написана в каком-либо
текстовом редакторе, например, Notepad. Теперь ее надо сохранить в файле, имя
которого совпадает с именем класса, содержащего метод
main ()
,
и дать имени файла расширение Java. Это правило очень желательно выполнять.
При этом система исполнения Java будет быстро находить метод
main()
для начала работы, просто отыскивая класс, совпадающий с именем
файла.
Совет
Называйте файл с программой именем
класса, содержащего метод
main ()
, соблюдая регистр
букв.
В нашем примере, сохраним программу
в файле с именем HelloWorld.java в текущем каталоге. Затем вызовем компилятор,
передавая ему имя файла в качестве аргумента:
javac
HelloWorld.java
Компилятор создаст файл с байт-кодами,
даст ему имя
Helloworid.class
и запишет этот файл в текущий
каталог.
Осталось вызвать интерпретатор,
передав ему в качестве аргумента имя класса (а не файла):
Java HelloWorld
На экране появится:
Hello, 21st Century
World!
Замечание
Не указывайте расширение class
при вызове интерпретатора.
На рис. 1.1 показано, как все это
выглядит в окне
Command Prompt
операционной системы MS Windows 2000.
Рис. 1.1.
Окно
Command Prompt
При работе в интегрированной среде
все эти действия вызываются выбором соответствующих пунктов меню или "горячими"
клавишами — единых правил здесь нет.