| « Поставить закладку » « Сделать стартовой » | |||
|
|||
|
Статьи:: Интернет технологии :: Технология JAVA :: ГЛАВА 1. Встроенные типы данных, операции над ними
ГЛАВА 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.
Замечание В тексте этой книги после имени метода ставятся скобки, чтобы подчеркнуть, что это имя именно метода, а не простой переменной.
Единственное действие, которое выполняет метод 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 При работе в интегрированной среде все эти действия вызываются выбором соответствующих пунктов меню или "горячими" клавишами — единых правил здесь нет. Комментарии В текст программы можно вставить комментарии, которые компилятор не будет учитывать. Они очень полезны для пояснений по ходу программы. В период отладки можно выключать из действий один или несколько операторов, пометив их символами комментария, как говорят программисты, "закомментарив" их. Комментарии вводятся таким образом:
Комментарии очень удобны для чтения и понимания кода, они превращают программу в документ, описывающий ее действия. Программу с хорошими комментариями называют самодокументированной. Поэтому в Java введены комментарии третьего типа, а в состав JDK — программа javadoc, извлекающая эти комментарии в отдельные файлы формата HTML и создающая гиперссылки между ними: за наклонной чертой и двумя звездочками подряд, без пробелов, /** начинается комментарий, который может занимать несколько строк до звездочки (одной) и наклонной черты */ и обрабатываться программой javadoc. В такой комментарий можно вставить указания программе javadoc, которые начинаются с символа @. Именно так создается документация к JDK. Добавим комментарии к нашему примеру (листинг 1.2). Листинг 1.2. Первая программа с комментариями /** * Разъяснение содержания и особенностей программы... * @author Имя Фамилия (автора) * @version 1.0 (это версия программы) */ class HelloWorld{ // HelloWorld — это только имя // Следующий метод начинает выполнение программы public static void main(String[] args){ // args не используются /* Следующий метод просто выводит свой аргумент * на экран дисплея */ System.out.println("Hello, 21st Century World!"); // Следующий вызов закомментирован, // метод не будет выполняться // System.out.println("Farewell, 20th Century!"); } } Звездочки в начале строк не имеют никакого значения, они написаны просто для выделения комментария. Пример, конечно, перегружен пояснениями (это плохой стиль), здесь просто показаны разные формы комментариев. Константы В языке Java можно записывать константы разных типов в разных видах. Перечислим их. Целые Целые константы можно записывать в трех системах счисления:
Замечание Число, начинающееся с нуля, записано в восьмеричной форме, а не в десятичной.
Целые константы хранятся в формате типа int (см. ниже). В конце целой константы можно записать букву прописную L или строчную l, тогда константа будет сохраняться в длинном формате типа long (см. ниже): +25L, -0371, OxffL, OXDFDF1. Совет Не используйте при записи длинных целых констант строчную латинскую букву l, ее легко спутать с единицей. Действительные Действительные константы записываются только в десятичной системе счисления в двух формах:
В конце действительной константы можно поставить букву F или f, тогда константа будет сохраняться в формате типа float (см. ниже): 3.5f, -45.67F, 4.7e-5f. Можно приписать и букву D (или d): 0.045D, -456.77889d, означающую тип double, но это излишне, поскольку действительные константы и так хранятся в формате типа double. Символы Для записи одиночных символов используются следующие формы.
Символы хранятся в формате типа char (см. ниже). Примечание Прописные русские буквы в кодировке Unicode занимают диапазон от 'u0410' — заглавная буква А, до 'u042F' — заглавная Я, строчные буквы от 'u0430' — а, до ' |