Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Герберт Шилдт. Java 2, v5.0 (Tiger). Новые возм...doc
Скачиваний:
5
Добавлен:
01.03.2025
Размер:
1.21 Mб
Скачать

Класс StringBuilder

Класс StringBuilder идентичен хорошо известному в языке Java классу StringBuffer за одним важным исключением: он не синхронизирован, что означает отсутствие потоковой безопасности. Преимущество класса StringBuilder — более быстрая обработка. Но если Вы используете многопоточность, то вместо класса StringBuilder следует применять класс StringBuffer.

В классе String определен новый конструктор, позволяющий создавать объект типа String из объекта типа StringBuilder. Его синтаксическая запись приведена в следующей строке:

String(StringBuilder strBuildObj)

Интерфейс Appendable

К объекту класса, реализующего интерфейс Appendable, можно добавлять символы или последовательности символов. В интерфейсе Appendable определены следующие два метода:

Appendable append(char ch) throws IOException

Appendable append(CharSequence chars) throws IOException

В первом варианте к вызывающему объекту добавляется символ ch. Во втором — последовательность символов chars. В обоих случаях возвращается ссылка на вызывающий объект.

Интерфейс Iterable

Интерфейс Iterable должен реализовываться любым классом, объекты которого будут обрабатываться в цикле for стиля for-each. Другими словами, для того чтобы корректно обрабатывать объект в цикле for стиля for-each, в его классе должен быть реализован интерфейс Iterable. Этот интерфейс — настраиваемый тип, общий вид его объявления приведен в следующей строке:

interface Iterable<T>

В интерфейсе Iterable определен один метод iterator(), синтаксическая запись которого показана в следующей строке:

Iterator<T> iterator()

Метод возвращает итератор для набора элементов, содержащихся в вызывающем объекте.

Интерфейс Readable

Интерфейс Readable показывает, что объект можно использовать как поставщик символов. В нем определен метод read (), приведенный в следующей строке:

int read(CharBuffer cb) throws lOException

Этот метод читает символы в переменную сb. Он возвращает количество прочитанных символов или -1, если встретился конец файла (EOF).

Новые методы побитной обработки классов Integer и Long

Несколько методов побитной обработки добавлены в числовые оболочки типов Integer и Long. Методы побитных манипуляций типа Integer приведены в табл. 10.2. В тип Long включены аналогичные методы за исключением того, что они обрабатывают данные типа long. Их перечень дан в табл. 10.3

Таблица 10.2. Методы побитной обработки, добавленные в тип Integer

Метод

Описание

static int bitCount(int num)

Возвращает количество единичных битов в

num

static int highestOneBit

Определяет позицию самого старшего раз-

(int num)

ряда с единичным битом в num. Возвращает

значение, в котором установлен только най-

денный самый старший бит. Если нет еди-

ничных битов, возвращает 0

static int lowestOneBit

Определяет позицию самого младшего раз-

(int num)

ряда с единичным битом в num. Возвращает

значение, в котором установлен только най-

денный самый младший бит. Если нет еди-

ничных битов, возвращает 0

Листинг 10.2. Демонстрация нескольких новых методов побитных манипуляций

в классе Integer

class Bits {

public static void main(String args[]) {

int n = 170; // 10101010

System.out.println("Value in binary: 10101010");

System.out.println("Number of one bits: " +

Integer.bitCount(n));

System.out.println("Highest one bit: " +

Integer.highestOneBit(n));

System.out.println("Lowest one bit: " +

Integer.lowestOneBit(n));

System.out.println("Number of leading zeros : " +

Integer.numberOfLeadingZeros(n));

System.out.println("Number of trailing zeros : " +

Integer.numberOfTrailingZeros(n));

System.out.println("\nBeginning with the value 1, " +

"rotate left 16 times.");

n = 1;

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

n = Integer.rotateLeft(n, 1);

System.out.println(n);

}

}

}

Далее приведен вывод результатов работы программы из листинга I0.2:

Value in binary: 10101010

Number of one bits: 4

Highest one bit: 128

Lowest one bit: 2

Number of leading zeros: 24

Number of trailing zeros: 1

Begining with the value X, rotate left 16 times.

2

4

8

16

32

64

128

256

512

1024

2048

4096

8192

16384

32768

65536