Рассмотрим самую простую программу, какую только можно написать на Java. В процессе выполнения она лишь выводит сообщение на консоль.
public class FirstSample {
public static void main(String[] args) {
System.out.println("We will not use 'Hello, World!1");
}
}
Этому примеру стоит посвятить столько времени, сколько потребуется, чтобы привыкнуть к особенностям языка и рассмотреть характерные черты программ на Java, которые будут еще не раз встречаться во всех приложениях. Прежде всего следует обратить внимание на то, что в языке Java учитывается регистр символов. Если вы перепутаете их (например, наберете Main вместо main), программа выполняться не будет.
А теперь проанализируем исходный код данной программы построчно. Ключевое слово public называется модификатором доступа. Такие модификаторы управляют обращением к коду из других частей программы. Более подробно этот вопрос будет рассматриваться в главе 5. Ключевое слово class напоминает нам, что все элементы программ на Java находятся в составе классов. Классы будут подробно обсуждаться в следующей главе, а до тех пор будем считать их некими контейнерами, в которых реализована программная логика, определяющая порядок работы приложения. Классы являются стандартными блоками, из которых состоят все приложения и аплеты, написанные на Java. Все, что имеется в программе на Java, должно находиться внутри класса.
За ключевым словом class следует имя класса. Правила составления имен классов не слишком строги. Имя должно начинаться с буквы, а остальная его часть может представлять собой произвольное сочетание букв и цифр. Длина имени не ограничена. В качестве имени класса нельзя использовать зарезервированные слова языка Java (например, public или class). (Список зарезервированных слов приведен в приложении к этому тому данной книги.)
Согласно принятым условным обозначениям, имя класса должно начинаться с прописной буквы (именно так сформировано имя FirstSample). Если имя состоит из нескольких слов, каждое из них должно начинаться с прописной буквы. (Это так называемое смешанное написание в "верблюжьем стиле" — CamelCase.)
Файл, содержащий исходный текст, должен называться так же, как и открытый (public) класс, и иметь расширение .Java. Таким образом, код рассматриваемого
здесь класса следует поместить в файл FirstSample.java.,(Как упоминалось выше, регистр символов непременно учитывается, поэтому имя firstsample.Java для обозначения исходного файла программы не годится.)
Если вы правильно назвали файл и не допустили ошибок в исходном тексте программы, то в результате компиляции получите файл, содержащий байт-код данного класса. Компилятор Java автоматически назовет этот файл FirstSample.class и сохранит его в том же каталоге, где находится исходный файл. Осталось лишь запустить программу на выполнение с помощью загрузчика Java, набрав следующую команду:
Java FirstSample
(Расширение .class не указывается!) При выполнении этой программы на экран выводится символьная строка "We will not use 1 Hello, World1 ! " (Мы не будем пользоваться избитой фразой «Здравствуй, мир!»).
Когда для запуска скомпилированной программы на выполнение используется следующая команда:
Java ИмяКласса
виртуальная машина Java всегда начинает свою работу с выполнения метода main () указанного класса (Термином метод в Java принято обозначать функцию.) Следовательно, для нормального выполнения программы в классе должен присутствовать метод main (). Разумеется, в класс можно добавить и другие методы и вызывать их из метода main (). (Мы покажем, как создавать такие методы, в следующей главе.)
НА ЗАМЕТКУ! В соответствии со спецификацией языка Java (Java Language Specification! метод main () должен быть объявлен как public. (Спецификация языка Java является официальным документом. Ее можно загрузить по адресу http://docs.oracle.com/javase/specs. Некоторые версии загрузчика Java допускали выполнение программ, даже когда метод main() не имел модификатора доступа public. Эта ошибка была внесена в список замеченных ошибок, доступный по адресу сайте http://bugs.sun.com/bugdatabase/index.jsp, и получила номер 4252539. Но она была помечена меткой "исправлению не подлежит". Разработчики из компании Sun Microsystems разъяснили, что спецификация виртуальной машины Java натребует, чтобы метод main () был непременно открытым (см. веб-страницу по адресу http://docs. oracle.com/javase/specs/jvms/se7/html), а попытка исправить эту ошибку "может вызвать потенциальные осложнения". К счастью, здравый смысл в конечном итоге возобладал. Загрузчик Java в версии Java SE 1.4 требует, чтобы метод main () был открытым (public).
Эта история имеет пару интересных аспектов. С одной стороны, становится как-то неуютно оттого, что инженеры, занимающиеся контролем качества программ, перегружены работой и не всегда оказываются компетентными в тонких моментах Java, принимая сомнительные решения относительно замеченных ошибок. С другой стороны, стоит отметить тот факт, что в свое время компания Sun Microsystems разместила списки ошибок и способы их исправления на своем веб-сайте, открыв их для всеобщего обозрения. Эта информация весьма полезна для программистов. Вы даже можете проголосовать за вашу "любимую" ошибку. Ошибки, набравшие наибольшее число голосов, будут исправлены в следующих выпусках JDK.
Обратите внимание на фигурные скобки в исходном коде рассматриваемой здесь программы. В Java, так же, как и в C/C++, фигурные скобки используются для выделения блоков программы. В Java код любого метода должен начинаться с открывающей фигурной скобки ({) и завершаться закрывающей фигурной скобкой (}).
Стиль расстановки фигурных скобок всегда вызывал споры. Обычно мы стараемся располагать скобки одну под другой, выравнивая их с помощью пробелов. А поскольку пробелы не имеют значения для компилятора Java, вы можете употреблять какой угодно вам стиль расположения фигурных скобок. В дальнейшем, рассматривая различные операторы цикла, мы обсудим применение фигурных скобок более подробно.
Можете пока что не обращать внимания на ключевые слова static void, считая их просто необходимой частью программы на Java. К концу главы 4 вам полностью раскроется подлинный смысл этих ключевых слов. А до тех пор запомните, что каждое приложение на Java должно непременно содержать метод main (), объявление которого приведено ниже.
public class ИмяКласса {
public static void main(String [ ] args) {
операторы программы
}
}
НА ЗАМЕТКУ С++! Если вы программируете на С++, то, безусловно, знаете, что такое класс. Клас-сы в Java похожи на классы в С++, но у них имеются существенные отличия. Так, в языке Java все функции являются методами того или иного класса. (Термин метод в Java соответствует термину функция-член в С++.) Следовательно, в Java должен существовать класс, которому принадлежит метод main (). Вероятно, вы знакомы с понятием статических функций-членов в С++. Это функции-члены, определенные в классе и не принадлежащие ни одному из объектов этого класса. Метод main () в Java всегда является статическим. И наконец, как и в C/C++, ключевое слово void означает, что метод не возвращает никакого значения. В отличие от C/C++, метод main () не передает операционной системе код завершения. Если этот метод корректно завершает свою работу, код завершения равен 0. А для того чтобы выйти из программы с другим кодом завершения, следует вызвать метод System.exit ().
Обратите внимание на следующий фрагмент кода:
{
System.out.println("We will not use 'Hello, World!1");
}
Фигурные скобки обозначают начало и конец тела метода, которое в данном случае состоит из единственной строки кода. Как и в большинстве языков программирования, операторы Java можно считать равнозначными предложениям в обычном языке. В Java каждый оператор должен непременно оканчиваться точкой с запятой. В частности, символ конца строки не означает конец оператора, поэтому оператор может занимать столько строк, сколько потребуется.
В рассматриваемом здесь примере кода при выполнении метода main () на консоль выводится одна текстовая строка. Для этой цели используется объект System, out и вызывается его метод println (). Обратите внимание на то, что метод отделяется от объекта точкой. В общем случае вызов метода в Java принимает приведенную ниже синтаксическую форму, что равнозначно вызову функции:
объект. метод (параметры)
В данном примере при вызове метода println () в качестве параметра ему передается символьная строка. Этот метод выводит символьную строку на консоль, дополняя ее символом перевода строки. В Java, как и в C/C++, строковый литерал
заключается в двойные кавычки. (Порядок обращения с символьными строками будет рассмотрен далее в этой главе.)
Методам в Java, как и функциям в любом другом языке программирования, можно вообще не передавать параметры или же передавать один или несколько параметров, которые иногда еще называют аргументами. Даже если у метода отсутствуют параметры, после его имени обязательно ставят пустые скобки. Например, при вызове метода println () без параметров на экран выводится пустая строка. Такой вызов выглядит следующим образом:
System.out.println();
НА ЗАМЕТКУ! У объекта System.out имеется метод print (), который выводит символьную строку, не добавляя к ней символ перехода на новую строку. Например, при вызове метода System, out .print ("Hello") выводится строка "Hello" и в конце нее ставится курсор. А следующие выводимые на экран данные появятся сразу после буквы о.
|