Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodichka_Po_Tp.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.44 Mб
Скачать

2. Структура Java-программы

Познакомимся с основными блоками Java-программы. Все рассматриваемые в данном разделе приложения не относятся к апплетам, но все сказанное ниже в равной степени и к апплетам.

Все Java-программы содержат в себе четыре разновидности блоков: классы (classes), методы (methods), переменные (variables) и пакеты (package).

Методы есть не что иное как функции или подпрограммы. В переменных же хранятся данные. Данные понятия присутствуют так или иначе во всех языках программирования. С другой стороны, классы представляют собой фундамент объектно-ориентированных свойств языка. Для простоты на данном этапе изучения языка Jаva можно сказать, что класс - это некое целое, содержащее переменные и методы.

Наконец, пакеты содержат в себе классы и помогают компилятору найти те классы, которые нужны ему для компиляции пользовательской программы. Классы, входящие в один пакет, особым образом зависят друг от друга, пока же, опять-таки для простоты, можно рассматривать просто как наборы классов. Например, приложение Hello импортирует пакет java.util, в котором содержится класс Date.

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

Java-программа может содержать в себе любое количество классов, но один из них всегда имеет особый статус и непосредственно взаимодействует с оболочкой времени выполнения (первичный класс). В таком классе обязательно должны быть определены один (для приложений) или несколько (для апплетов) специальных методов. Для приложений первичный класс должен обязательно содержать метод main().

Рассмотрим подробнее каждый из основных блоков Java-программы: переменных, методов, классов и пакетов.

2.1 Переменные

Переменную можно представить как хранилище для единицы данных, имеющее собственное имя. Любая переменная принадлежит определенному типу. Тип переменной определяет, какую информацию в ней можно хранить. Переменные должны быть объявлены с использованием следующего синтаксиса (модификаторы рассматриваются ниже в разделе, посвященном классам):

<Модификаторы> ТипПеременной ИмяПеременной ;

В Java существует два вида переменных. Первый - примитивные типы (primitive types). К ним относятся стандартные, встроенные в язык типы для представления численных значений, одиночных символов и булевских (двоичных, логических) значений. Все примитивные типы имеют предопределенный размер занимаемой ими памяти. Ко второму виду переменных - ссылочные типы (reference type) - относятся типы, определенные пользователем (классы, интерфейсы) и типы массивов. Все ссылочные типы являются динамическими типами, для них выделяется память во время работы программы.

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

Практически самым важным различием между двумя типами переменных является то, что память для ссылочных переменных выделяется динамически, во время выполнения программы. Использование переменных ссылочных типов требует явного запрашивания требуемого количества памяти для каждой переменной прежде, чем можно будет сохранить в этой переменной какое-либо значение. Причина проста - оболочка времени выполнения сама по себе не знает, какое количество памяти требуется для того или иного ссылочного типа. Рассмотрим в качестве примера использования переменных разных типов следующую программу:

/*------------- Пример 2. Файл VarTypes.java -------------*/

class VarTypes

{ public static void main(String args[])

{

// переменная примитивного типа

int varPrimitive;

// сразу после объявления можно в нее записывать данные

varPrimitive=1;

// переменная ссылочного типа

int varReference[]; // или: int[] varReference;

// выделение памяти для переменной этого типа

varReference=new int[3];

// теперь можно сохранять данные в переменной этого типа

varReference[0]=2;

varReference[1]=3;

varReference[2]=4;

System.out.println("varPrimitive="+varPrimitive);

System.out.println("varReference[0]="+varReference[0]);

System.out.println("varReference[1]="+varReference[1]);

System.out.println("varReference[2]="+varReference[2]);

}

} /*--------------------------------------------------------------*/

Так как тип int относится к примитивным типам, оболочка выполнения знает, сколько места необходимо выделить такой переменной (четыре байта). Однако при объявлении массива переменных типа int, оболочка выполнения не может знать, сколько места потребуется для хранения этого массива. Поэтому прежде, чем разместить что-либо в переменной ссылочного типа, необходимо запросить у системы определенное количество памяти под эту переменную. Этот запрос осуществляется с помощью оператора new.

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

Ссылочные переменные, хоть и очень похожи на указатели C/C++, имеют сильное отличие от них. Используя ссылочные типы, нельзя получить доступ к фактическим адресам данным в памяти.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]