Изучаем Java

Вы здесь: Главная >> Java-учебник >> Структуры языка Java

Структуры языка Java


Основные структуры языка Java

В этой главе...
Простая программа на языке Java
Комментарии
Типы данных
Переменные
Присваивания и инициализации
Операторы
Строки
Поток управления
Большие числа
Массивы

 

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

К сожалению, на языке Java нелегко написать программу, использующую графический пользовательский интерфейс, — для этого нужно изучить массу деталей, связанных с окнами, полями ввода, кнопками и т.п. Поскольку описание таких технических
подробностей увело бы нас далеко в сторону от нашей основной цели — анализа основных структур языка, в этой главе мы рассмотрим лишь "игрушечные" программы, иллюстрирующие то или иное понятие. Все эти программы просто выводят на консоль результаты своей работы. (В среде Windows консолью является окно MS DOS.)

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

 

В заключение заметим, что опытные программисты на языке C/C++ могут просто бегло просмотреть эту главу, обратив особое внимание на замечания о языке C/C++, разбросанные по тексту. Программистам на других языках, например Visual Basic, многие понятия окажутся знакомыми, хотя их синтаксис совершенно другой. Таким читателям мы советуем тщательно изучить эту главу.

 

Простая программа на языке Java

Рассмотрим поближе простейшую программу, какую только можно себе представить, — она просто выводит сообщение в консольное окно.

public class FirstSample
{
public static void main(St ring[] args)
{
System.out.print In("We will not use 'Hello, World!'");
}

 

Этому примеру стоит посвятить столько времени, сколько потребуется, чтобы привыкнуть к особенностям языка; эти моменты будут встречаться во всех приложениях.
Первый и главный момент — в языке Java строго различаются прописные и строчные буквы. Если вы перепутаете их (например, набрав слово Main вместо main), программа выполняться не

 

Теперь просмотрим исходный код построчно. Ключевое слово public называется модификатором доступа (access modifier); такие модификаторы управляют доступом к данному коду из других частей программы. Более подробно мы рассмотрим этот вопрос в главе 5.

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

За ключевым словом class следует имя класса. Правила образования имен классов не слишком строги. Имя должно начинаться с буквы, а остальная его часть может быть любой комбинацией букв и цифр. Длина имени практически не ограничена. В качестве имени класса нельзя использовать зарезервированные слова языка Java (например, public или if). (Список зарезервированных слов приведен в приложении.)

 

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

Файл, содержащий исходный текст, должен называться так же, как и открытый класс, и иметь расширение java. Таким образом, класс мы должны записать в файл
FirstSample . java. (Как и прежде, прописные и строчные буквы различаются — не используйте имя firstsample. java.)

 

Если вы этого не сделаете, то при попытке выполнить компиляцию получите замечательное по своей ясности сообщение об ошибке ("Public class FirstSample must be defined in a file called 'FirstSample.java"' — "Открытый класс FirstSample должен быть определен в файле 'FirstSample.java'").

Если вы правильно назвали файл и не сделали опечатки в исходном тексте программы, то, скомпилировав его, получите файл, содержащий байт-коды, соответствующие данному классу. Компилятор языка Java автоматически назовет этот файл FirstSample . class и сохранит его в каталоге, где содержится исходный файл. Осталось выполнить байт-коды с помощью интерпретатора языка Java, набрав команду java FirstSample
(Не забудьте отбросить расширение .class) Выполняясь, программа просто выведет на экран строку "We will not use 'Hello,World! '"

 

Когда для запуска скомпилированной программы используется команда java ИмяКласса,
интерпретатор языка Java всегда начинает свою работу с выполнения метода main указанного класса. Следовательно, чтобы программа вообще могла выполняться, в классе должен содержаться метод main. Разумеется, в класс можно добавить свои собственные методы и вызывать их с помощью метода main. (Мы покажем, как создавать такие методы в следующей главе.)


В соответствии со спецификацией языка Java метод main должен быть объявлен открытым (public). (Спецификация языка Java (Java Language Specification) является официальным документом. Его можно просмотреть или загрузить с Web-страницы http://java.sun.com/docs/books/jls/ Однако некоторые версии интерпретатора языка Java пытались запускать программы, даже когда метод main не имел модификатора public Эта ошибка была помещена в список замеченных неполадок, представленный на сайте http://developer.java.sun.com/developer/bugParade, под номером 4252539.
Однако она сопровождалась примечанием: "закрыта, исправлению не подлежит".

 

Разработчики компании Sun выступили с разъяснениями, что спецификация виртуальной машины языка Java (Java Virtual Machine Specification) не требует, чтобы метод main был открытым (см. Web-страницу http://java . sun . com/ docs/books/vmspec), а попытка исправить эту ошибку "может вызвать проблемы". К счастью, здравый смысл в итоге восторжествовал. Интерпретатор языка Java в пакете SDK 1.4 требует, чтобы метод main был открытым.

 

Эта история имеет несколько интересных аспектов. С одной стороны, становится как-то неуютно от того, что разработчики, призванные гарантировать высокое качество программ, часто слишком много работают сверхурочно и не всегда проверяют слабые места языка Java, предпочитая отмахиваться от замеченных ошибок. С другой стороны, стоит отметить тот факт, что компания Sun разместила список ошибок и способы их исправления на Web-сайте, открыв его для исследования. Этот "парад ошибок" представляет собой весьма полезный ресурс для программистов. Вы даже можете "проголосовать" за вашу любимую ошибку. Ошибки, набравшие наибольшее число голосов, будут исправлены в следующих выпусках пакета SDK.

 

Обратите внимание на фигурные скобки в исходном тексте программы. В языке Java так же, как и в языке C/C++, фигурные скобки используются для выделения частей программы (обычно называемых блоками). В языке Java код любого метода должен начинаться с открывающей фигурной скобки { и завершаться закрывающей скобкой }.

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

Пока мы не будем обращать внимание на ключевые слова static void, считая их просто необходимой частью программы на языке Java. В конце главы 4 мы полностью раскроем смысл этих слов. Сейчас важно помнить, что каждое приложение на языке Java должно иметь метод main, заголовок которого приведен ниже.


public class Имя Класса
{
public static void main (String[] args)
{
команды программы
}
}

 

Вы уже знаете, что такое класс.
Классы в языке Java похожи на классы в языке C/C++, однако между ними есть несколько различий, которые могут завлечь вас в ловушку. Например, в языке Java все функции являются методами какого-либо класса. (В стандартной терминологии они называются методами, а не функциями-членами.)
Следовательно, в языке Java должен существовать класс, которому принадлежит метод main. Вероятно, вы знакомы с концепцией статических функций-членов в языке C++. Это функции-члены, определенные внутри класса и не принадлежащие ни одному объекту.

 

Метод main в языке Java всегда является статическим. В заключение, как и в языке C/C++, ключевое слово void означает, что метод не возвращает никакого значения. В отличие от языка C/C++, метод main не передает "код выхода" операционной системе.

Если метод main завершает свою работу нормально, код выхода программы на языке Java равен 0, что свидетельствует о ее успешном выполнении. Чтобы прекратить выполнение программы с другим кодом выхода, используйте метод System.exit.

Теперь обратите внимание на следующий фрагмент кода:
{
System.out.println ("We will not use ‘Hello, World!’ " ) ;
}

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

Тело метода main состоит из оператора, который выводит на консоль одну строку текста.
В данном примере мы используем объект System, out и вызываем его метод println. Заметьте, что для вызова метода используется точка. В общем случае вызов метода имеет следующий вид:
объект. метод (параметры)

 

В нашем примере мы вызываем метод println, передавая ему текстовую строку в качестве параметра. Метод выводит этот текст на консоль, выполняя переход на следующую строку. В языке Java, как и в языке C/C++, для разделения строк используются двойные кавычки. (Далее в этой главе мы рассмотрим работу со строками подробнее.)

 

Методы в языке Java, как и функции в любом другом языке программирования, могут иметь один или несколько параметров, либо не иметь их вовсе (в некоторых языках они называются аргументами). Даже если метод не имеет параметров, нужно оставлять пустые скобки. Например, есть вариант метода println без параметров, выводящий на экран пустую строку.
Его вызов выглядит так: System.out.println() ;

В объекте System, out есть метод print, который не добавляет к строке символ перехода на новую строку. Например, оператор System.out.print("Hello") выводит текст "Hello" и оставляет курсор в конце строки. Следующий вывод появится на экране сразу за буквой "о".


Партнеры сайта