Переменная окружения CLASSPATH.

Оператор import.

Лекция №4.

Чтобы избавить раз­работчика от необходимости указывать полные имена и в то же время позволить ему воспользоваться преимуществами пакетов, используется оператор import.

Если вы собираетесь работать в программе с другими классами пакета projects.firstorder.math, можете включить все классы с помощью одного оператора import, который в данном случае будет выглядеть так:

import projects.firstorder.math.*;

Заметьте, что символ * определяет классы, но не пакеты. Так, если вы включите в исходный текст строку

import projects.firstorder. *;

вы импортируете классы, содержащиеся в пакете firstorder, по не пакет math.

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

· Поиск класса должен начинаться с одного из каталогов, указанных в качестве значения переменной окружения CLASSPATH.

· Иерархия каталогов должна соответствовать иерархии пакетов.

Если на вашем компьютере установлен JDK, обратите внимание на содержимое файла autoexec.bat. Вы найдете в нём строку приблизительно такого содержания:

SET CLASSPATH=.;C:\JDK1.1\CLASSES;C:\JDK1.1\LIB\CLASSES.ZIP

Как видите, в качестве значения переменной окружения CLASSPATH указаны текущий каталог, каталог C:\JDK1.1\CLASSES и файл C:\JDK1.1\LIB\CLASSES.ZIP. Предположим, что в файл, содержащий исходный текст программы, включена следующая строка:

import java.applet.*;

В этом случае поиск классов для импортирования производится следующим обра­зом. Вначале проверяется текущий каталог. Поскольку иерархия каталогов должна со­ответствовать иерархии пакетов, классы и пакеты, содержащиеся в пакете java, долж­ны находиться в каталоге с именем java. Если такою каталоги нет, поиск продолжает­ся в каталоге C:\JDK1.1\CLASSES. Если и там нет каталога с именем java, проверяется файл C:\JDK1.1\LIB\CLASSES.ZIP.

В файле CLASSES.ZIP находится архив, в котором сохранена структура каталогов. Ввиду того что длина большинства файлов, содержащих описание классов, выражает­ся трехзначными числами, хранение классов в виде архиве, позволяет эффективнее использовать дисковое пространство.

 

Если бы классы хранились в обычных, не архивированных файлах, они заняли бы в несколько раз больше места на диске.  

 

 


Оперативно распаковывая содержимое архива, средства поддержки пакетов Java обнаруживают каталог с именем java. В этом каталоге находится подкаталог с именем applet. Содержимое этого подкаталога и должно быть импортировано.

Итак, проверка наличия пакета, по существу, сводится к проверке наличия подка­талога с указанным именем.

Класс, о котором должен знать каждый.

В отличие от C/C+ + , где роль строки выполняет массив символов, оканчиваю­щийся нулем, в Java строка представляется специальным объектом. Прежде чем вы­полнять с объектом типа String какие-либо действия, его надо сначала создать.

Ниже перечислены некоторые из конструкторов класса String.

· String () — создаёт объект String, представляющий «пустую» строку.

· String (String) — создаёт новый объект String, представляющий собой копию объекта, переданного конструктору в качестве параметра.

· String (char [ ]) — создаёт новый объект String и инициализирует его указанным массивом символов.

· String (char [ ], int смещение int длина) — инициализирует создаваемый объект String частью массива символов указанной длины, которая начинается с элемента, номер которого задан в качестве второго параметра.

· String (byte [ ], int старший_байт) — создаст новый объект String и инициализирует его элементами из заданного байтового массива. В качестве заполнителя для старшего байта используется значение второго параметра.

Программируя на языке C. вы, наверное, привыкли к тому, что имеете возмож­ность обратиться к любому элементу массива символов и записать в него новое зна­чение. В языке Java все действия со строками выполняются посредством вызова мето­дов класса String.

Ниже описаны некоторые из методов класса String и действия, которые они вы­полняют.

· int length () — возвращает число символов, содержащихся в строке.

· int compareTo (String строка) сравнивает объект String со строкой, указан­ной в качестве параметра, и возвращает целое число. Это число больше нуля, если строка, представленная текущим объектом, больше значения параметра; меньше нуля, если данная строка меньше значения параметра, и равно нулю, если строки совпадают.

· char charAt (int позиция) возвращает символ, расположенный в строке в по­зиции, указанной в качестве параметра.

· char [] toCharArray () — преобразует строку в массив символов. В процессе вы­полнения данного метода создаётся новый массив.

· String concat (String строка) создаёт новую строку, являющуюся конкатена­цией строки, представленной данным объектом String, и строки, переданной в качестве параметра.

· String toUpperCase () — преобразует все символы строки в символы верхнего регистра. Если говорить точно, то в результате действия метода создается новая строка, содержащая преобразованные символы.

· String toLowerCase () — преобразует все символы строки в символы нижнего регистра.

· String replace (char символ_1, char символ _2) — заменяет все вхождения симво­ла_1 символом_2.

· String trim () — удаляет все пробелы в начале и в конце строки.

К сожалению, среди методов класса String нет метода, «обратного» charAt (), кото­рый бы помещал заданный символ в указанную позицию. Поэтому, если вам необхо­димо заменить в строке один или несколько символов, приходится пользоваться спо­собом, подобным следующему:

String str1 = new String (“sleep”);

String str2;

char char_form [];

char_form = str1.toCharArray ()

char_form [1] = ‘w’;

str2 = new String (char_form);