Московский государственный индустриальный университет
Опубликован: 27.09.2006 | Доступ: свободный | Студентов: 3332 / 380 | Оценка: 4.17 / 3.79 | Длительность: 24:17:00
Специальности: Программист
Лекция 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 >
Анастасия Халудорова
Анастасия Халудорова
екатерина яковлева
екатерина яковлева