Применительно к полям ключевое слово static радикально меняет способ оп¬ределения данных: статические данные существуют на уровне класса, в то вре¬мя как нестатические данные существуют на уровне объектов, но в отношении изменения не столь принципиальны. Одним из важных применений static явля¬ется определение методов, которые могут вызываться без объектов. В частно¬сти, это абсолютно необходимо для метода main(), который представляет собой точку входа в приложение.
Наша первая программа на Java
Наконец, долгожданная программа. Она запускается, выводит на экран строку, а затем текущую дату, используя стандартный класс Date из стандартной биб¬лиотеки Java:
// HelloDate.java
import java util.*;
public class HelloDate {
public static void main(String[] args) {
System.out.printlnC"Привет, сегодня- "); System out println(new DateO):
}
}
В начале каждого файла с программой должны находиться директивы import, в которых перечисляются все дополнительные классы, необходимые ва¬шей программе. Обратите внимание на слово «дополнительные» — существует целая библиотека классов, присоединяющаяся автоматически к каждому файлу Java: java.lang. Запустите ваш браузер и просмотрите документацию фирмы Sun. (Если вы не загрузили документацию JDK с сайта http://java.sun. com или не получили ее иным способом, обязательно это сделайте .) Учтите, что докумен¬тация не входит в комплект JDK; ее необходимо загрузить отдельно. Взглянув на список пакетов, вы найдете в нем различные библиотеки классов, поставляе¬мые с Java. Выберите java.lang. Здесь вы увидите список всех классов, состав¬ляющих эту библиотеку. Так как пакет java.lang. автоматически включается в каждую программу на Java, эти классы всегда доступны для использования. Класса Date в нем нет, а это значит, что для его использования придется импор¬тировать другую библиотеку. Если вы не знаете, в какой библиотеке находится нужный класс, или если вам понадобится увидеть все классы, выберите Tree (дерево классов) в документации. В нем можно обнаружить любой из доступ¬ных классов Java. Функция поиска текста в браузере поможет найти класс Date. Результат поиска показывает, что класс называется java. util.Date, то есть нахо¬дится в библиотеке util, и для получения доступа к классу Date необходимо бу¬дет использовать директиву import для загрузки пакета java.util.*.
Если вы вернетесь к началу, выберете пакет java.lang, а затем класс System, то увидите, что он имеет несколько полей. При выборе поля out обнаруживается, что оно представляет собой статический объект PrintStream. Так как поле описа¬но с ключевым словом static, вам не понадобится создавать объекты. Действия, которые можно выполнять с объектом out, определяются его типом: PrintStream. Для удобства в описание этого типа включена гиперссылка, и, если щелкнуть на ней, вы обнаружите список всех доступных методов. Этих методов довольно много, и они будут позже рассмотрены в книге. Сейчас нас интересует только метод println(), вызов которого фактически означает: «вывести то, что передано методу, на консоль и перейти на новую строку». Таким образом, в любую про¬грамму на Java можно включить вызов вида System.out.println ("что-то"), чтобы вывести сообщение на консоль.
Имя класса совпадает с именем файла. Когда вы создаете отдельную про¬грамму, подобную этой, один из классов, описанных в файле, должен иметь совпадающее с ним название. (Если это условие нарушено, компилятор сооб¬щит об ошибке.) Одноименный класс должен содержать метод с именем main() со следующей сигнатурой и возвращаемым типом:
public static void main(String[] args) {
Ключевое слово public обозначает, что метод доступен для внешнего мира (об этом подробно рассказывает глава 5). Аргументом метода main() является массив строк. В данной программе массив args не используется, но компилятор Java настаивает на его присутствии, так как массив содержит параметры, пере¬данные программе в командной строке.
Строка, в которой распечатывается число, довольно интересна:
System, out. print 1 л (new DateO);
Аргумент представляет собой объект Date, который создается лишь затем, чтобы передать свое значение (автоматически преобразуемое в String) методу println(). Как только команда будет выполнена, объект Date становится ненуж¬ным, сборщик мусора заметит это, и в конце концов сам удалит его. Нам не нужно беспокоиться о его удалении самим.
Компиляция и выполнение
Чтобы скомпилировать и выполнить эту программу, а также все остальные про¬граммы в книге, вам понадобится среда разработки Java. Существует множест¬во различных сред разработок от сторонних производителей, но в этой книге мы предполагаем, что вы избрали бесплатную среду JDK Qava Developer's Kit) от фирмы Sun. Если же вы используете другие системы разработки программ , вам придется просмотреть их документацию, чтобы узнать, как компилировать и запускать программы.
Подключитесь к Интернету и посетите сайт http://java.sun.com. Там вы най¬дете информацию и необходимые ссылки, чтобы загрузить и установить JDK для вашей платформы.
Как только вы установите JDK и правильно установите пути запуска, в ре¬зультате чего система сможет найти утилиты javac и java, загрузите и распакуй¬те исходные тексты программ для этой книги (их можно загрузить с сайта www.MindView.net). Там вы обнаружите каталоги (папки) для каждой главы книги. Перейдите в папку objects и выполните команду
javac HelloDate java
Команда не должна выводить каких-либо сообщений. Если вы получили со¬общение об ошибке, значит, вы неверно установили JDK и вам нужно разо¬браться со своими проблемами.
И наоборот, если все прошло успешно, выполните следующую команду:
java HelloDate
и вы увидите сообщение и число как результат работы программы.
Эта последовательность действий позволяет откомпилировать и выполнить любую программу-пример из этой книги. Однако также вы увидите, что каждая папка содержит файл build.xml с командами для инструмента ant по автоматиче¬ской сборке файлов для данной главы. После установки ant с сайта http://jakarta. apache.org/ant можно будет просто набрать команду ant в командной строке, чтобы скомпилировать и запустить программу из любого примера. Если ant на вашем компьютере еще не установлен, команды javac и java придется вводить вручную.
Комментарии и встроенная документация
В Java приняты два вида комментариев. Первый — традиционные комментарии в стиле С, также унаследованные языком С++. Такие комментарии начинаются с комбинации /* и распространяются иногда на множество строк, после чего за¬канчиваются символами */. Заметьте, что многие программисты начинают каж¬дую новую строку таких комментариев символом *, соответственно, часто мож¬но увидеть следующее:
/* Это комментарий,
* распространяющийся на
* несколько строк */
Впрочем, все символы между /* и */ игнорируются, и с таким же успехом можно использовать запись
/* Это комментарий, распространяющийся на несколько строк */
Второй вид комментария пришел из языка С++. Однострочный коммента¬рий начинается с комбинации // и продолжается до конца строки. Такой стиль очень удобен и прост, поэтому широко используется на практике. Вам не при¬ходится искать на клавиатуре сначала символ /, а затем * (вместо этого вы два¬жды нажимаете одну и ту же клавишу), и не нужно закрывать комментарий. Поэтому часто можно увидеть такие примеры:
// это комментарий в одну строку
Документация в комментариях
Пожалуй, основные проблемы с документированием кода связаны с его сопро¬вождением. Если код и его документация существуют раздельно, корректиро¬вать описание программы при каждом ее изменении становится задачей не из лег¬ких. Решение выглядит очень просто: совместить код и документацию. Проще всего объединить их в одном файле. Но для полноты картины понадобится спе¬циальный синтаксис комментариев, чтобы помечать документацию, и инстру¬мент, который извлекал бы эти комментарии и оформлял их в подходящем виде. Именно это было сделано в Java.