Опубликован: 27.09.2006 | Уровень: для всех | Доступ: свободно
Лекция 2:

Основы языка Java

< Лекция 1 || Лекция 2: 123456 || Лекция 3 >

Задача 2.2.Напишите программу, печатающую на экране красивое поздравление с новым учебным годом.

Текст программы

public class NewYear {
    // magic !
    public static void main(String[] args) {    
        Xterm.clear();
        Xterm.setPosition(25,8);
        Xterm.print("С новым годом ", Xterm.Red);
        Xterm.print("(учебным)", Xterm.Blue);
        Xterm.print("!", Xterm.Red);
        Xterm.setPosition(0,16);
        /*
          Конец программы
        */
    }
}

В этой программе используются два вида комментариев из трех, существующих в языке Java. Текст, расположенный после символов // вплоть до конца строки, и произвольное количество строк текста между символами /* и */, компилятором просто игнорируются. Знакомство с третьим видом комментариев, предназначенным для автоматического документирования программ, отложим до третьей главы книги. Второй из комментариев, включенных в приведенную выше программу, является типичным примером комментария, ухудшающего код. Не включайте в свои программы бесполезные комментарии!

Некоторые фрагменты этой (и многих последующих) программы обсуждаться до начала третьей главы не будут. Только тогда, после полноценного знакомства с основными концепциями объектно-ориентированного программирования на языке Java, можно будет разобраться с тем, что же означает строка public static void main(String[] args). Пока мы будем просто считать, что так надо!

Содержательная же часть приведенной программы (тело функции main, т.е. текст, расположенный между внутренними фигурными скобками) сейчас будет подробно разобрана. Рекомендуется откомпилировать и запустить эту программу для того, чтобы увидеть результат ее работы, — это поможет лучше понять ее. При этом следует иметь в виду, что кроме файла NewYear.java в данном случае необходим еще и файл Xterm.java (его содержимое приведено для справки в последней секции данной лекции).

Объект, с которым ведется работа в программе, — Xterm. Подробно он рассматривается чуть ниже, а пока отметим только то, что он определяет терминал, обеспечивающий ввод чисел и вывод строк текста. Объект Xterm содержит в себе некоторую информацию или, как говорят находится в некотором состоянии. Состояние характеризуется тем текстом, который отображается в окне терминала, и положением курсора, отвечающего за позицию, в которой появится очередной выводимый символ.

На самом деле в классе Xterm нет компонент, содержащих указанную информацию (она хранится совсем в другом объекте), однако подобное упрощение реальной ситуации является весьма удобным.

Множество всех состояний, в которых может находиться объект, называется пространством состояний. По отношению к объекту могут быть выполнены некоторые, заранее определенные действия — методы (methods), а процесс выполнения этих действий называют вызовом метода. В результате этих действий состояние объекта может измениться.

В языке Java для вызова метода необходимо сначала указать объект, к которому применяется тот или иной метод, а затем после точки записать имя метода. Именно этот синтаксис, в котором главная роль отводится объекту, над которым производится действие, послужил основой для названия парадигмы — "объектно-ориентированная".

Некоторые из методов требуют для своего выполнения указания дополнительных объектов. Такие дополнительные объекты называют параметрами или аргументами и перечисляют их через запятую в круглых скобках после имени метода. В случае метода без параметров скобки тем не менее обязательны. Завершается любой оператор в языке Java точкой с запятой.

Рассматриваемая программа содержит вызов трех различных методов класса Xterm: clear, setPosition и print. Первый из них очищает окно терминала и не имеет параметров, второй перемещает курсор в позицию, задаваемую параметрами метода, а третий позволяет вывести строку текста. При этом первый параметр метода print определяет выводимую строку, а второй задает цвет символов.

Все встретившиеся в данной программе методы не возвращают значений, однако это вовсе не является обязательным. Метод может возвращать в качестве результата своей работы объект произвольного типа с помощью оператора return.

Типы, переменные и операторы

Типы данных в языке Java подразделяются на простые ( primitive ) и ссылочные ( reference ). К простым относятся величины логического типа boolean, символьного char, целых типов byte, short, int и long, и типов для представления действительных чисел float и double. Ссылочные типы позволяют работать с объектами и массивами.

Множество всех объектов с одинаковым пространством состояний и одинаковым набором методов называется классом (class). Почти все, с чем приходится иметь дело в языке Java, — это объекты различных классов.

Логический тип предназначен для хранения величин, имеющих значения False (Ложь) или True (Истина), а символьный тип позволяет хранить многочисленные символы различных алфавитов всех народов мира. Особенностям представления числовых типов и работе с ними посвящен следующий параграф.

Для работы с объектами, массивами и сущностями простых типов используются переменные (variables). Присваивание переменной какого-то значения, содержащегося в некоторой другой переменной, результата вызова метода или вычисленного выражения, осуществляется с помощью оператора присваивания =.

В языке Java все переменные должны быть описаны, т.е. для каждой переменной в программе до ее первого использования должно присутствовать ее определение. Общий вид определения переменных таков:

тип идентификатор [= значение] [, идентификатор [= значение ]...];

Описание переменной определяет ее тип и имя ( идентификатор ). Имя представляет из себя последовательность из букв, цифр, символов подчеркивания и доллара, причем первый символ не может быть цифрой, а прописные и строчные буквы различаются.

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

Javaстрого типизированный язык. Это, в частности, означает, что переменной одного типа, вообще говоря, нельзя присвоить значение другого типа — несовпадение типов приведет к сообщению об ошибке на этапе компиляции. Для каждого типа строго определены наборы допустимых значений и разрешенных операций. Например, для типов int и double операция сложения определена, а для типа boolean — нет.

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

double f = 1.0, g = 1;

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

double f = 1.1;
    int    n = (int) f, m = (int) (f + 0.8);

Для преобразования типа переменной или какого-то выражения необходимо перед ним указать в круглых скобках новый тип. В приведенном выше примере обе целочисленные переменные ( m и n ) окажутся равными единице.

Кроме уже встретившихся операторов вызова метода, присваивания и преобразования типа в языка Java определен целый ряд других. Операторы бывают унарными (с одним аргументом), бинарными (с двумя) и тернарными (с тремя). Большинство операторов языка Java являются бинарными: к ним относятся, например, операции сложения и умножения чисел. Унарные операторы подразделяются на префиксные и постфиксные, а тернарный оператор в языке всего один.

Существует и другая классификация операторов: они делятся на арифметические, битовые, операторы отношения и логические. Арифметические и битовые операторы разбираются в "Особенности представления чисел в ЭВМ" после знакомства с представлением чисел в ЭВМ, а логические операторы и операторы отношения — в конце текущей лекции.

< Лекция 1 || Лекция 2: 123456 || Лекция 3 >
Анастасия Халудорова
Анастасия Халудорова
подавляющее большиство фукций на пространстве последовательостей?
екатерина яковлева
екатерина яковлева
как получить сертификат,что для этого нужно?
Павел Плахотник
Павел Плахотник
Украина, Днепропетровск
Елена Сергеева
Елена Сергеева
Россия, Таганрог, ТРТУ, 2003