Выбрать главу

@deprecated

Тег используется для пометки устаревших возможностей, замещенных новыми и улучшенными. Он сообщает о том, что определенные средства программы не следует использовать, так как в будущем они, скорее всего, будут убраны. В Java SE5 тег @deprecated был заменен директивой @Deprecated (см. далее).

Пример документации

Вернемся к нашей первой программе на Java, но на этот раз добавим в нее ком¬ментарии со встроенной документацией:

//: object/Hel1oDate.java import java util.*;

/** Первая программа-пример книги.

* Выводит строку и текущее число.

* ^author Брюс Эккель

* ^author www.MindView net

* (Aversion 4.0 */

public class HelloDate {

/** Точка входа в класс и приложение

* @param args Массив строковых аргументов

* @throws exceptions Исключения не выдаются */

public static void main(String[] args) {

System out.printlnCTIpMBeT. сегодня: "); System.out.println(new DateO);

}

} /* Output. (55* match) Привет, сегодня. Wed Oct 05 14:39:36 MDT 2005 */// ~

В первой строке файла использована моя личная методика помещения спе¬циального маркера //: в комментарий как признака того, что в этой строке ком¬ментария содержится имя файла с исходным текстом. Здесь указывается путь к файлу (object означает эту главу) с последующим именем файла . Последняя строка также завершается комментарием (///:~), обозначающим конец исход¬ного текста программы. Он помогает автоматически извлекать из текста книги программы для проверки компилятором и выполнения.

Тег /* Output: обозначает начало выходных данных, сгенерированных дан¬ным файлом. В этой форме их можно автоматически проверить на точность.

В данном случае значение (55% match) сообщает системе тестирования, что ре¬зультаты будут заметно отличаться при разных запусках программы. В боль¬шинстве примеров книги результаты приводятся в комментариях такого вида, чтобы вы могли проверить их на правильность.

Стиль оформления программ

Согласно правилам стиля, описанным в руководстве Code Conventions for the Java Programming Languageимена классов должны записываться с прописной буквы. Если имя состоит из нескольких слов, они объединяются (то есть симво¬лы подчеркивания не используются для разделения), и каждое слово в имени начинается с большой буквы:

class А11TheColorsOfTheRainbow { // ..

Практически для всего остального: методов, полей и ссылок на объекты — используется такой же способ записи, за одним исключением — первая буква идентификатора записывается строчной. Например:

class AllTheColorsOfTheRainbow {

int anlntegerRepresentingColors; void changeTheHueOfTheColor(int newHue) { II ...

}

// .

}

Помните, что пользователю ваших классов и методов придется вводить все эти длинные имена, так что будьте милосердны.

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

Резюме

В этой главе я постарался привести информацию о программировании на Java, достаточную для написания самой простой программы. Также был представлен обзор языка и некоторых его основных свойств. Однако примеры до сих пор имели форму «сначала это, потом это, а после что-то еще». В следующих двух главах будут представлены основные операторы, используемые при программи¬ровании на Java, а также способы передачи управления в вашей программе

Операторы

На нижнем уровне операции с данными в Java осуществляются посредством операторов.

Язык Java создавался на основе С++, поэтому большинство этих операторов и конструкций знакомы программистам на С и С++. Также в Java были добав¬лены некоторые улучшения и упрощения.

Если вы .знакомы с синтаксисом С или С++, бегло просмотрите эту и сле¬дующую главу, останавливаясь на тех местах, в которых Java отличается от этих языков. Если чтение дается вам с трудом, попробуйте обратиться к мультиме¬дийному семинару Thinking in С, свободно загружаемому с сайта www.Mind- View.net. Он содержит аудиолекции, слайды, упражнения и решения, специаль¬но разработанные для быстрого ознакомления с синтаксисом С, необходимым для успешного овладения языком Java.

Простые команды печати

В предыдущей главе была представлена команда печати Java

System.out.println("Какая длинная команда...");

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

В главе 6 представлена концепция статического импорта, появившаяся в Java SE5, а также крошечная библиотека, упрощающая написание команд пе¬чати. Тем не менее для использования библиотеки не обязательно знать все подробности. Программу из предыдущей главы можно переписать в следующем виде:

// operators/HelloDate java import java util *.

import static net mindview util Print.*,

public class HelloDate {

public static void main(String[] args) { print("Привет, сегодня- "); print(new DateO),

}

} /* Output- (55% match)

Привет, сегодня

Wed Oct 05 14-39 36 MDT 2005

*///:-

Результат смотрится гораздо приятнее. Обратите внимание на ключевое слово static во второй команде import.

Чтобы использовать эту библиотеку, необходимо загрузить архив с приме¬рами кода. Распакуйте его и включите корневой каталог дерева в переменную окружения CLASSPATH вашего компьютера. Хотя использование net.mindview. util. Print упрощает программный код, оно оправданно не везде. Если программа содержит небольшое количество команд печати, я отказываюсь от import и за¬писываю полный вызов System.out.println().

Операторы Java

Оператор получает один или несколько аргументов и создает на их основе но¬вое значение. Форма передачи аргументов несколько иная, чем при вызове ме¬тода, но эффект тот же самый. Сложение (+), вычитание и унарный минус (-), умножение (*), деление (/) и присвоение (=) работают одинаково фактически во всех языках программирования.

Все операторы работают с операндами и выдают какой-то результат. Вдоба¬вок некоторые операторы могут изменить значение операнда. Это называется побочным эффектом. Как правило, операторы, изменяющие значение своих операндов, используются именно ради побочного эффекта, но вы должны пом¬нить, что полученное значение может быть использовано в программе и обыч¬ным образом, независимо от побочных эффектов.

Почти все операторы работают только с примитивами. Исключениями явля¬ются =, = = и !=, которые могут быть применены к объектам (и создают немало затруднений). Кроме того, класс String поддерживает операции + и +=.

Приоритет

Приоритет операций определяет порядок вычисления выражений с нескольки¬ми операторами. В Java существуют конкретные правила для определения оче¬редности вычислений. Легче всего запомнить, что деление и умножение выпол¬няются раньше сложения и вычитания. Программисты часто забывают правила предшествования, поэтому для явного задания порядка вычислений следует ис¬пользовать круглые скобки. Например, взгляните на команды (1) и (2):

// operators/Precedence java

public class Precedence {

public static void main(String[] args) {

int x = 1, у = 2, z = 3; // (1)

int b = x + (y - 2)/(2 + z), // (2) System out.printlnC'a = " + a + " b = " + b;

}

} /* Output a = 5 b = 1 *///.-

Команды похожи друг на друга, но из результатов хорошо видно, что они имеют разный смысл в зависимости от присутствия круглых скобок.

Обратите внимание на оператор + в команде System.out.println. В данном кон¬тексте + означает конкатенацию строк, а не суммирование. Когда компилятор встречает объект String, за которым следует + и объект, отличный от String, он пытается преобразовать последний объект в String. Как видно из выходных дан¬ных, для а и b тип int был успешно преобразован в String.