Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Некоторые объекты стандартных пакетов java.lang и java.util.




В языке Java имеется много классов, объединенных в пакеты. Пакет java.lang подключается автоматически. Остальные пакеты следует подключать с помощью оператора import.

 

Класс Class. В пакете java.lang имеется класс Class, описывающий информацию о классе.

forName (имя существующего класса) возвращает указатель на существующий класс.

newInstance ()создает новый экземпляр класса, аналогично оператору new.

Object vehicle;

Class whichClass=Class.forName(vehicleClass);

Vehicle=whichClass.newInstance();

getName () возвращает строку с именем класса.

 

Пакет java.util. В пакете java.util сосредоточены контейнерные объекты, способные содержать другие объекты.

 

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

Класс имеет три конструктора:

Vector () создает пустой вектор.

Vector (количество) создает вектор с указанным количеством элементов, если этого количества не хватает, то размер увеличивается вдвое.

Vector (количество, шаг) создает вектор с указанным количеством элементов, если этого количества не хватает, то размер увеличивается на шаг.

addElement (добавляемый объект) добавление объекта в конец вектора.

InsertElementAt (вставляемый объект, позиция) – вставка объекта в заданную позицию.

setElementAt (заменяющий объект, позиция) – замена объекта в конкретной позиции.

removeAllElements () удаляет из вектора все элементы.

removeElement (объект) –удаляет из вектора первое вхождение заданного объекта.

removeElementAt (позиция) – удаляет объект в заданной позиции.

elementAt (номер позиции) выборка элемента в заданной позиции.

firstElement () – первый элемент вектора.

lastElement () последний элемент вектора.

isEmpty () проверяет, содержит ли вектор элементы.

size () сообщает, сколько объектов хранится в векторе.

copyInto (массив объектов) копирование всех элементов вектора в массив.

contains (объект) – определяет присутствие объекта в векторе.

indexOf (объект) – возвращает позицию первого вхождения объекта или –1.

indexOf (объект, начальная позиция) – возвращает позицию первого вхождения объекта, считая от начальной позиции, или –1.

lastindexOf (объект) – возвращает позицию последнего вхождения объекта или –1.

lastindexOf (объект, начальная позиция) возвращает позицию последнего вхождения объекта, считая от начальной позиции, или –1.

elements () возвращает объект Enumeration для всех элементов вектора. Используется если необходимо перебрать все элементы вектора. Обеспечивает последовательный доступ к элементам и содержит два метода:

hasMoreElement () возвращает true, пока имеются элементы, к которым есть доступ.

nextElement () возвращает следующий элемент.

 

Пример:

Enumeration vectEnum=myVector.elements();

while (vectEnum.hasMoreElements())

{Object nextOb=vectEnum.nextElement();

}

 

Класс Dictionary содержит два поля key – ключ, и value – значение (оба поля могут являться любыми объектами). Ключ может быть связан только с одним значением, но значение может иметь более чем один ключ.

put (ключ, значение) используется для внесения объекта в словарь.

get (ключ) возвращает объект – значение или null.

remove (ключ) удаляет элемент с заданным ключом.

isEmpty () проверяет, есть ли объекты в словаре.

size () определяет, сколько элементов находится в словаре.

keys () возвращает объект Enumeration, позволяющий рассмотреть все ключи в словаре.

elements () возвращает объект Enumeration, позволяющий рассмотреть все значения в словаре.

Класс Stack является потомком класса Vector. Для добавления элемента к стеку используется метод push (объект). Для получения элемента из вершины стека используется метод pop (). Для определения элемента, находящегося на вершине стека, существует метод peek (). Булевский метод empty () проверяет, пуст ли стек. Метод search (объект) возвращает номер элемента от вершины стека или -1.

Организация ввода/вывода

Пакет java.io используется для организации операций ввода/вывода. В пакете java.io определяются несколько типов потоков. Обычно они составляют пары ввода/вывода:

· Конвейерные потоки Piped спроектированы для парного использования, при котором байты, записываемые в PipedOutputStream, могут читаться из PipedInputStream.

· Байтовые потоки ByteArray осуществляют ввод/вывод в массив байтов.

· Фильтрующие потоки Filtered представляют собой абстрактные классы байтовых потоков, в которых с читаемыми байтами выполняются некоторые операции-фильтры. Объект FilterInputStream получает ввод от другого объекта InputStream, некоторым образом обрабатывает (фильтрует) байты и возвращает результат. Фильтрующие потоки могут объединяться в последовательности, при этом несколько фильтров превращаются в один сквозной фильтр. Аналогичным образом осуществляется и фильтрация вывода – для этого применяются различные классы FilterOutputStream.

· Буферизованные потоки Buffered расширяют понятие фильтрующих потоков, добавляя буферизацию, чтобы при каждом вызове read и write не приходилось обращаться к файловой системе.

· Потоки данных Data разделяются на две категории. Интерфейсы DataInput и DataOutput определяют методы для чтения и записи данных встроенных типов. Эти интерфейсы реализуются классами DataInputStream и DataOutputStream.

· Файловые потоки File расширяют понятие фильтрующих потоков, байтовый поток в них связывается с определенным файлом. В них встроены некоторые методы, относящиеся к работе с файлами.

 

InputStream – абстрактный класс, задающий используемую в Java модель входных потоков. Все методы этого класса при возникновении ошибки возбуждают исключение IOException.

read () возвращает представление очередного доступного символа во входном потоке в виде целого.

read (массив байтов) пытается прочесть максимум байтов, равное длине массива, из входного потока в этот массив. Возвращает количество байтов, в действительности прочитанных из потока.

read (массив байтов, смещение, число символов) пытается прочесть число символов, расположив их в массиве, начиная с указанного смещения. Возвращает количество реально прочитанных байтов.

skip (число байтов) пытается пропустить во входном потоке указанное число байтов. Возвращает количество пропущенных байтов.

available () возвращает количество байтов, доступных для чтения в настоящий момент.

close () закрывает источник ввода. Последующие попытки чтения из этого потока приводят к возбуждению IOException.

mark (предельное число) ставит метку в текущей позиции входного потока, которую можно будет использовать до тех пор, пока из потока не будет прочитано предельное число байтов.

reset () возвращает указатель потока на установленную ранее метку.

markSupported () возвращает true, если данный поток поддерживает операции mark/reset.

 

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

write (поле целого типа) записывает один байт в выходной поток. Обратите внимание на то, что аргумент этого метода имеет тип int, что позволяет вызывать write, передавая ему выражение, при этом не нужно выполнять приведение его типа к byte.

write (массив байтов) записывает в выходной поток указанный массив байтов.

write (массив байтов, смещение, число символов) записывает в поток часть массива – число символов, начиная с указанного смещения массива.

flush () очищает любые выходные буферы, завершая операцию вывода.

close () закрывает выходной поток. Последующие попытки записи в этот поток будут возбуждать IOException.

 

Файловые потоки. Класс FileInputStream используется для ввода данных из файлов. При создании объекта класса FileInputStream файл открывается для чтения.

FileInputStream замещает шесть первых методов абстрактного класса InputStream. Попытки применить к объекту этого класса методы mark и reset приводят к возбуждению исключения IOException. Класс имеет конструктор FileInputStream (строка с именем файла).

В приведенном ниже примере показано, как можно читать одиночные байты, массив байтов и поддиапазон массива байтов. В этом примере также показано, как методом available можно узнать, сколько еще осталось непрочитанных байтов, и как с помощью метода skip можно пропустить те байты, которые Вы не хотите читать.

import java.io.*;

import java.util.*;

class FileInputStreamS {

public static void main(String args[]) {

int size;

InputStream f1 = new FileInputStream("default.htm");

size = f1.available();

System.out.println("Total Available Bytes: " + size);

System.out.println("First 1/4 of the file: read()");

for (int i=0; i < size/4; i++) {

System.out.print((char) f1.read());

}

System.out.println("Total Still Available: " +

f1.available());

System.out.println("Reading the next"+

"1/8: read(b[])");

byte b[] = new byte[size/8];

if (f1.read(b)!= b.length) {

System.err.println("Something bad happened");

}

String tmpstr = new String(b, 0, 0, b.length);

System.out.println(tmpstr);

System.out.println("Still Available: " +

f1.available());

System.out.println("Skipping another 1/4: skip()");

f1.skip(size/4);

System.out.println("Still Available: " +

f1.available());

System.out.println("Reading 1/16 into the end"+

" of array");

if (f1.read(b, b.length-size/16, size/16)!=

size/16) {

System.err.println("Something bad happened");

}

System.out.println("Still Available: " +

f1.available());

f1.close();

}

}

 

У класса FileOutputStream – такой же конструктор, что и у FileInputStream. Создавать объекты этого класса можно независимо от того, существует файл или нет. При создании нового объекта класс FileOutputStream перед тем, как открыть файл для вывода, сначала создает его.

В примере символы, введенные с клавиатуры, считываются из потока System.in по одному, до тех пор, пока не заполнится 12-байтовый буфер. После этого создаются три файла. В первый из них, file1.txt, записываются через один символы из буфера (нулевой, второй и так далее). Во второй, file2.txt, записывается весь буфер. В третий файл записывается половина буфера, расположенная в середине.

import java.io.*;

class FileOutputStreamS {

public static byte getlnput() {

byte buffer[] = new byte[12];

for (int i=0; i<12; i++) {

buffer[i] = (byte) System.in.read();

}

return buffer;

}

public static void main(String args[]) {

byte buf[] = getlnput();

OutputStream f0 = new FileOutputStream("file1.txt");

OutputStream f1 = new FileOutputStream("file2.txt");

OutputStream f2 = new FileOutputStream("file3.txt");

for (int i=0; i < 12; i += 2) {

f0.write(buf[i]);

}

f0.close();

f1.write(buf);

f1.close();

f2.write(buf, 12/4, 12/2);

f2.close();

}

}

 

Потоки данных DataInput и DataOutput. Хотя возможность чтения и записи байтовых потоков достаточно полезна, часто бывает необходимо пересылать в потоке данные определенного типа. Интерфейсы DataInput и DataOutput определяют методы для пересылки примитивных типов Java в потоке. Реализация этих интерфейсов по умолчанию представлена классами DataInputStream и DataOutputStream.

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

Read Write Тип
readBoolean writeBoolean boolean
readChar writeChar char
readByte writeByte byte
readShort writeShort short
readInt writeInt int
readLong writeLong long
readFloat writeFloat float
readDouble writeDouble double
readUTF writeUTF String в формате UTF

 

 

Список рекомендуемой литературы:

1. Зыков С.В. Введение в теорию программирования. Объектно-ориентированный подход [электронный ресурс], точка доступа: http://www.intuit.ru/department/se/tppobj/

2. Б. Мейер. Основы объектно-ориентированного программирования [электронный ресурс], точка доступа: http://www.intuit.ru/department/se/oopbases/

3. Перри Д.С. Введение в Java-программирование: Часть 1. Основы языка Java [электронный ресурс], точка доступа: http://www.ibm.com/developerworks/ru/edu/j-introtojava1/index.html

4. API Specification for the Java 7 SE [электронный ресурс], точка доступа: http://docs.oracle.com/javase/7/docs/api/

5. The Java Tutorials. SE [электронный ресурс], точка доступа: http://docs.oracle.com/javase/tutorial/index.html

6. Грэди Буч. Объектно-ориентированный анализ и проектирование. Второе издание, перевод с английского под редакцией И. Романовского и Ф. Андреева. Rational Санта-Клара, Калифорния.

7. Гослинг Д., Арнолд К. и др. Язык программирования Java. Издательский дом "Питер", 1997-2002.

8. Файн Я. – Программирование на Java для детей, родителей, дедушек и бабушек,2001

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...