Spec-Zone.ru › OpenJDK 21

Класс IntBuffer

java.lang.Object
java.nio.Buffer
java.nio.IntBuffer
Все реализуемые интерфейсы:
Comparable<IntBuffer>
public abstract sealed class IntBuffer extends Buffer implements Comparable<IntBuffer>
Буфер int.

Этот класс определяет четыре категории операций с буферами int:

  • Абсолютные и относительные методы get и put для чтения и записи отдельных int;

  • Абсолютные и относительные методы bulk get для переноса смежных последовательностей int из этого буфера в массив;

  • Абсолютные и относительные методы bulk put для переноса смежных последовательностей int из массива int или другого буфера int в этот буфер;

  • Метод для compacting буфера int.

Буферы int могут быть созданы либо с помощью allocation, который выделяет память для содержимого буфера, либо с помощью wrapping существующего массива int в буфер, или путем создания представления существующего буфера byte.

Как и буфер byte, буфер int может быть прямым или непрямым. Буфер int, созданный с помощью методов wrap этого класса, будет непрямым. Буфер int, созданный как представление буфера byte, будет прямым тогда и только тогда, когда сам буфер byte является прямым. Прямой ли буфер int или нет, можно определить, вызвав метод isDirect.

Методы в этом классе, которые не возвращают иное значение, указаны как возвращающие буфер, на котором они вызываются. Это позволяет цепочить вызовы методов.

Дополнительные операции

Методы, указанные как дополнительные операции, выбрасывают исключение ReadOnlyBufferException при вызове на только для чтения IntBuffer. Методы array и arrayOffset выбрасывают UnsupportedOperationException, если IntBuffer не поддерживает доступ к массиву int (независимо от того, является ли IntBuffer только для чтения).
С:
1.4

Краткое описание методов

Модификатор и тип Метод Описание
static IntBuffer allocate(int capacity)
Выделяет новый буфер int.
final int[] array()
Возвращает массив int, который поддерживает этот буфер (дополнительная операция).
final int arrayOffset()
Возвращает смещение в поддерживающем массиве этого буфера первого элемента буфера (дополнительная операция).
abstract IntBuffer asReadOnlyBuffer()
Создает новый буфер int только для чтения, который разделяет содержимое этого буфера.
final IntBuffer clear()
Очищает этот буфер.
abstract IntBuffer compact()
Сжимает этот буфер (дополнительная операция).
int compareTo(IntBuffer that)
Сравнивает этот буфер с другим.
abstract IntBuffer duplicate()
Создает новый буфер int, который разделяет содержимое этого буфера.
boolean equals(Object ob)
Указывает, равен ли этот буфер другому объекту.
final IntBuffer flip()
Переворачивает этот буфер.
abstract int get()
Относительный метод get.
abstract int get(int index)
Абсолютный метод get.
IntBuffer get(int[] dst)
Относительный метод get для блоков данных.
IntBuffer get(int[] dst, int offset, int length)
Относительный метод get для блоков данных.
IntBuffer get(int index, int[] dst)
Абсолютный метод get для блоков данных.
IntBuffer get(int index, int[] dst, int offset, int length)
Абсолютный метод get для блоков данных.
final boolean hasArray()
Указывает, поддерживает ли этот буфер доступ к массиву int.
int hashCode()
Возвращает текущий хэш-код этого буфера.
abstract boolean isDirect()
Указывает, является ли этот буфер int прямым.
final IntBuffer limit(int newLimit)
Устанавливает предел этого буфера.
final IntBuffer mark()
Устанавливает метку этого буфера в его текущей позиции.
int mismatch(IntBuffer that)
Находит и возвращает относительный индекс первого несовпадения между этим буфером и заданным буфером.
abstract ByteOrder order()
Получает порядок байтов этого буфера.
final IntBuffer position(int newPosition)
Устанавливает позицию этого буфера.
abstract IntBuffer put(int i)
Относительный метод put (дополнительная операция).
final IntBuffer put(int[] src)
Относительный метод put для блоков данных (дополнительная операция).
IntBuffer put(int[] src, int offset, int length)
Относительный метод put для блоков данных (дополнительная операция).
abstract IntBuffer put(int index, int i)
Абсолютный метод put (дополнительная операция).
IntBuffer put(int index, int[] src)
Абсолютный метод put для блоков данных (дополнительная операция).
IntBuffer put(int index, int[] src, int offset, int length)
Абсолютный метод put для блоков данных (дополнительная операция).
IntBuffer put(int index, IntBuffer src, int offset, int length)
Абсолютный метод put для блоков данных (дополнительная операция).
IntBuffer put(IntBuffer src)
Относительный метод put для блоков данных (дополнительная операция).
final IntBuffer reset()
Возвращает позицию этого буфера к ранее помеченной позиции.
final IntBuffer rewind()
Перематывает этот буфер.
abstract IntBuffer slice()
Создает новый буфер int, содержащий фрагмент этого буфера.
abstract IntBuffer slice(int index, int length)
Создает новый буфер int, содержащий фрагмент этого буфера.
String toString()
Возвращает строку, описывающую состояние этого буфера.
static IntBuffer wrap(int[] array)
Преобразует массив int в буфер.
static IntBuffer wrap(int[] array, int offset, int length)
Преобразует массив int в буфер.

Методы, объявленные в классе java.nio.Buffer

capacity, hasRemaining, isReadOnly, limit, position, remaining

Методы, объявленные в классе java.lang.Object

clone, finalize, getClass, notify, notifyAll, wait, wait, wait

Подробное описание методов

allocate

public static IntBuffer allocate(int capacity)
Выделяет новый буфер int.

Позиция нового буфера будет равна нулю, предел — его емкости, метка — неопределенной, каждый элемент будет инициализирован нулем, а порядок байтов — native order базового оборудования. Он будет иметь backing array, а его array offset будет равен нулю.

Параметры:
capacity - Емкость нового буфера в int
Возвращает:
Новый буфер int
Исключения:
IllegalArgumentException - Если capacity — отрицательное целое число

wrap

public static IntBuffer wrap(int[] array, int offset, int length)
Оборачивает массив int в буфер.

Новый буфер будет поддерживаться заданным массивом int; то есть изменения в буфере приведут к изменению массива и наоборот. Емкость нового буфера будет array.length, его позиция — offset, предел — offset + length, метка — неопределенной, а порядок байтов — native order базового оборудования. Его backing array будет заданным массивом, а array offset — нулем.

Параметры:
array - Массив, который будет поддерживать новый буфер
offset - Смещение подмассива для использования; должно быть неотрицательным и не больше array.length. Позиция нового буфера будет установлена в это значение.
length - Длина подмассива для использования; должно быть неотрицательным и не больше array.length - offset. Предел нового буфера будет установлен в offset + length.
Возвращает:
Новый буфер int
Исключения:
IndexOutOfBoundsException - Если условия для offset и length параметров не выполняются

wrap

public static IntBuffer wrap(int[] array)
Оборачивает массив int в буфер.

Новый буфер будет поддерживаться заданным массивом int; то есть изменения в буфере приведут к изменению массива и наоборот. Емкость и предел нового буфера будут array.length, его позиция — нулю, метка — неопределенной, а порядок байтов — native order базового оборудования. Его backing array будет заданным массивом, а array offset — нулю.

Параметры:
array - Массив, который будет поддерживать этот буфер
Возвращает:
Новый буфер int

slice

public abstract IntBuffer slice()
Создает новый буфер int, содержимое которого является общим подпоследовательностью содержимого этого буфера.

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

Позиция нового буфера будет равна нулю, его емкость и предел — количеству int, оставшихся в этом буфере, метка — неопределенной, а порядок байтов — идентичен порядку байтов этого буфера. Новый буфер будет прямым тогда и только тогда, когда этот буфер является прямым, и он будет только для чтения тогда и только тогда, когда этот буфер является только для чтения.

Определено в:
slice в классе Buffer
Возвращает:
Новый буфер int

slice

public abstract IntBuffer slice(int index, int length)
Создает новый буфер int, содержимое которого является общим подпоследовательностью содержимого этого буфера.

Содержимое нового буфера начнется с позиции index в этом буфере и будет содержать length элементов. Изменения в содержимом этого буфера будут видны в новом буфере, и наоборот; значения позиции, предела и метки двух буферов будут независимыми.

Позиция нового буфера будет равна нулю, его емкость и предел — length, метка — неопределенной, а порядок байтов — идентичен порядку байтов этого буфера. Новый буфер будет прямым тогда и только тогда, когда этот буфер является прямым, и он будет только для чтения тогда и только тогда, когда этот буфер является только для чтения.

Определено в:
slice в классе Buffer
Параметры:
index - Позиция в этом буфере, с которой начнется содержимое нового буфера; должна быть неотрицательной и не больше limit()
length - Количество элементов, которые будет содержать новый буфер; должно быть неотрицательным и не больше limit() - index
Возвращает:
Новый буфер
Исключения:
IndexOutOfBoundsException - Если index отрицательно или больше limit(), length отрицательно или length > limit() - index
С:
13

duplicate

public abstract IntBuffer duplicate()
Создает новый буфер int, который совместно использует содержимое этого буфера.

Содержимое нового буфера будет таким же, как у этого буфера. Изменения в содержимом этого буфера будут видны в новом буфере, и наоборот; значения позиции, предела и метки двух буферов будут независимыми.

Емкость, предел, позиция, метка и порядок байтов нового буфера будут идентичны значениям этого буфера. Новый буфер будет прямым тогда и только тогда, когда этот буфер является прямым, и он будет только для чтения тогда и только тогда, когда этот буфер является только для чтения.

Определено в:
duplicate в классе Buffer
Возвращает:
Новый буфер int

asReadOnlyBuffer

public abstract IntBuffer asReadOnlyBuffer()
Создает новый, только для чтения буфер int, который совместно использует содержимое этого буфера.

Содержимое нового буфера будет таким же, как у этого буфера. Изменения в содержимом этого буфера будут видны в новом буфере; однако сам новый буфер будет только для чтения и не позволит изменять совместно используемое содержимое. Значения позиции, предела и метки двух буферов будут независимыми.

Емкость, предел, позиция, метка и порядок байтов нового буфера будут идентичны значениям этого буфера.

Если этот буфер сам по себе только для чтения, то этот метод ведет себя точно так же, как метод duplicate.

Возвращает:
Новый буфер int только для чтения

get

public abstract int get()
Относительный метод get. Считывает int в текущей позиции буфера и затем увеличивает позицию.
Возвращает:
int в текущей позиции буфера
Исключения:
BufferUnderflowException - Если текущая позиция буфера не меньше его предела

put

public abstract IntBuffer put(int i)
Относительный метод put (дополнительная операция).

Записывает заданный int в этот буфер по текущей позиции и затем увеличивает позицию.

Параметры:
i - Записываемое целое число
Возвращает:
Этот буфер
Исключения:
BufferOverflowException - Если текущая позиция этого буфера не меньше его предела
ReadOnlyBufferException - Если этот буфер только для чтения

get

public abstract int get(int index)
Абсолютный метод get. Считывает int по заданному индексу.
Параметры:
index - Индекс, с которого будет считываться int
Возвращает:
int по заданному индексу
Исключения:
IndexOutOfBoundsException - Если index отрицательно или не меньше предела буфера

put

public abstract IntBuffer put(int index, int i)
Абсолютный метод put (дополнительная операция).

Записывает заданный int в этот буфер по заданному индексу.

Параметры:
index - Индекс, по которому будет записано целое число
i - Значение int для записи
Возвращает:
Этот буфер
Исключения:
IndexOutOfBoundsException - Если index отрицательно или не меньше предела буфера
ReadOnlyBufferException - Если этот буфер только для чтения

get

public IntBuffer get(int[] dst, int offset, int length)
Относительный метод get для работы с блоками.

Этот метод передает int из этого буфера в заданный массив назначения. Если оставшихся int в буфере меньше, чем требуется для выполнения запроса, то есть, если length > remaining(), то int не передаются, и выбрасывается BufferUnderflowException.

В противном случае этот метод копирует length int из этого буфера в заданный массив, начиная с текущей позиции этого буфера и заданного смещения в массиве. Позиция этого буфера затем увеличивается на length.

Другими словами, вызов этого метода в форме src.get(dst, off, len) имеет точно такой же эффект, как цикл

    for (int i = off; i < off + len; i++)
        dst[i] = src.get();
за исключением того, что он сначала проверяет, достаточно ли в этом буфере int, и потенциально намного эффективнее.
Параметры:
dst - Массив, в который будут записаны int
offset - Смещение в массиве первого int для записи; должно быть неотрицательным и не больше dst.length
length - Максимальное количество int, которое будет записано в заданный массив; должно быть неотрицательным и не больше dst.length - offset
Возвращает:
Этот буфер
Исключения:
BufferUnderflowException - Если оставшихся int в этом буфере меньше, чем length
IndexOutOfBoundsException - Если условия для offset и length параметров не выполняются

get

public IntBuffer get(int[] dst)
Метод get относительного объёма.

Этот метод переносит целые числа из этого буфера в заданный массив назначения. Вызов этого метода в форме src.get(a) ведет себя точно так же, как вызов

    src.get(a, 0, a.length)
Параметры:
dst - Массив назначения
Возвращает:
Этот буфер
Исключения:
BufferUnderflowException - Если в этом буфере осталось меньше, чем length целых чисел

get

public IntBuffer get(int index, int[] dst, int offset, int length)
Метод get абсолютного объёма.

Этот метод переносит length целых чисел из этого буфера в заданный массив, начиная с заданного индекса в этом буфере и с заданного смещения в массиве. Позиция этого буфера не изменяется.

Вызов этого метода в форме src.get(index, dst, offset, length) имеет точно такой же эффект, как следующий цикл, за исключением того, что он сначала проверяет согласованность предоставленных параметров и потенциально может быть гораздо эффективнее:

    for (int i = offset, j = index; i < offset + length; i++, j++)
        dst[i] = src.get(j);
Параметры:
index - Индекс в этом буфере, с которого будет считано первое целое число; должно быть неотрицательным и меньше limit()
dst - Массив назначения
offset - Смещение в массиве первого целого числа, которое будет записано; должно быть неотрицательным и меньше dst.length
length - Количество целых чисел, которые будут записаны в заданный массив; должно быть неотрицательным и не больше меньшего из значений limit() - index и dst.length - offset
Возвращает:
Этот буфер
Исключения:
IndexOutOfBoundsException - Если условия на параметры index, offset, и length не соблюдаются
С:
13

get

public IntBuffer get(int index, int[] dst)
Метод get абсолютного объёма.

Этот метод переносит целые числа из этого буфера в заданный массив назначения. Позиция этого буфера не изменяется. Вызов этого метода в форме src.get(index, dst) ведет себя точно так же, как вызов:

    src.get(index, dst, 0, dst.length)
Параметры:
index - Индекс в этом буфере, с которого будет считано первое целое число; должно быть неотрицательным и меньше limit()
dst - Массив назначения
Возвращает:
Этот буфер
Исключения:
IndexOutOfBoundsException - Если index отрицательно, не меньше limit(), или limit() - index < dst.length
С:
13

put

public IntBuffer put(IntBuffer src)
Метод put относительного объёма (необязательная операция).

Этот метод переносит оставшиеся целые числа из заданного буфера источника в этот буфер. Если оставшихся целых чисел в буфере источника больше, чем в этом буфере, то есть, если src.remaining() > remaining(), то целые числа не переносятся, и выбрасывается исключение BufferOverflowException.

В противном случае этот метод копирует n = src.remaining() целых чисел из заданного буфера в этот буфер, начиная с текущей позиции каждого буфера. Позиции обоих буферов затем увеличиваются на n.

Другими словами, вызов этого метода в форме dst.put(src) имеет точно такой же эффект, как цикл

    while (src.hasRemaining())
        dst.put(src.get());
за исключением того, что он сначала проверяет наличие достаточного места в этом буфере и потенциально может быть гораздо эффективнее. Если этот буфер и буфер источника используют один и тот же базовый массив или память, то результат будет таким, как если бы элементы источника были сначала скопированы в промежуточное местоположение перед записью в этот буфер.
Параметры:
src - Буфер источника, из которого читаются целые числа; не должен быть этим буфером
Возвращает:
Этот буфер
Исключения:
BufferOverflowException - Если в этом буфере недостаточно места для оставшихся целых чисел в буфере источника
IllegalArgumentException - Если буфер источника является этим буфером
ReadOnlyBufferException - Если этот буфер только для чтения

put

public IntBuffer put(int index, IntBuffer src, int offset, int length)
Метод put абсолютного объёма (необязательная операция).

Этот метод переносит length целых чисел в этот буфер из заданного буфера источника, начиная с заданного offset в буфере источника и заданного index в этом буфере. Позиции обоих буферов не изменяются.

Другими словами, вызов этого метода в форме dst.put(index, src, offset, length) имеет точно такой же эффект, как цикл

    for (int i = offset, j = index; i < offset + length; i++, j++)
        dst.put(j, src.get(i));
за исключением того, что он сначала проверяет согласованность предоставленных параметров и потенциально может быть гораздо эффективнее. Если этот буфер и буфер источника используют один и тот же базовый массив или память, то результат будет таким, как если бы элементы источника были сначала скопированы в промежуточное местоположение перед записью в этот буфер.
Параметры:
index - Индекс в этом буфере, в котором будет записано первое целое число; должно быть неотрицательным и меньше limit()
src - Буфер, из которого читаются целые числа
offset - Индекс в буфере источника первого целого числа, которое будет считано; должно быть неотрицательным и меньше src.limit()
length - Количество целых чисел, которое должно быть считано из данного буфера; должно быть неотрицательным и не больше меньшего из limit() - index и src.limit() - offset
Возвращает:
Этот буфер
Исключения:
IndexOutOfBoundsException - Если условия на параметры index, offset, и length не соблюдаются
ReadOnlyBufferException - Если этот буфер только для чтения
С:
16

put

public IntBuffer put(int[] src, int offset, int length)
Метод put относительного объёма (необязательная операция).

Этот метод переносит целые числа в этот буфер из заданного массива источника. Если целых чисел, которые должны быть скопированы из массива, больше, чем остается в этом буфере, то есть, если length > remaining(), то целые числа не переносятся, и выбрасывается исключение BufferOverflowException.

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

Другими словами, вызов этого метода в форме dst.put(src, off, len) имеет точно такой же эффект, как цикл

    for (int i = off; i < off + len; i++)
        dst.put(src[i]);
за исключением того, что он сначала проверяет наличие достаточного места в этом буфере и потенциально может быть гораздо эффективнее.
Параметры:
src - Массив, из которого должны быть считаны целые числа
offset - Смещение в массиве первого целого числа, которое должно быть считано; должно быть неотрицательным и не больше src.length
length - Количество целых чисел, которые должны быть считаны из данного массива; должно быть неотрицательным и не больше src.length - offset
Возвращает:
Этот буфер
Исключения:
BufferOverflowException - Если в этом буфере недостаточно места
IndexOutOfBoundsException - Если условия на параметры offset и length не соблюдаются
ReadOnlyBufferException - Если этот буфер только для чтения

put

public final IntBuffer put(int[] src)
Метод put относительного объёма (необязательная операция).

Этот метод переносит всё содержимое заданного массива целых чисел в этот буфер. Вызов этого метода в форме dst.put(a) ведет себя точно так же, как вызов

    dst.put(a, 0, a.length)
Параметры:
src - Массив источника
Возвращает:
Этот буфер
Исключения:
BufferOverflowException - Если в этом буфере недостаточно места
ReadOnlyBufferException - Если этот буфер только для чтения

put

public IntBuffer put(int index, int[] src, int offset, int length)
Метод put абсолютного объёма (необязательная операция).

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

Вызов этого метода в форме dst.put(index, src, offset, length) имеет точно такой же эффект, как следующий цикл, за исключением того, что он сначала проверяет согласованность предоставленных параметров и потенциально может быть гораздо эффективнее:

    for (int i = offset, j = index; i < offset + length; i++, j++)
        dst.put(j, src[i]);
Параметры:
index - Индекс в этом буфере, в котором будет записано первое целое число; должно быть неотрицательным и меньше limit()
src - Массив, из которого читаются целые числа
offset - Смещение в массиве первого целого числа, которое должно быть считано; должно быть неотрицательным и меньше src.length
length - Количество целых чисел, которое должно быть считано из данного массива; должно быть неотрицательным и не больше меньшего из limit() - index и src.length - offset
Возвращает:
Этот буфер
Исключения:
IndexOutOfBoundsException - Если условия на параметры index, offset, и length не соблюдаются
ReadOnlyBufferException - Если этот буфер только для чтения
С:
13

put

public IntBuffer put(int index, int[] src)
Метод put для абсолютного объёмного копирования (необязательная операция).

Этот метод копирует целые числа из заданного массива в этот буфер. Позиция этого буфера не изменяется. Вызов этого метода в виде dst.put(index, src) ведет себя точно так же, как вызов:

    dst.put(index, src, 0, src.length);
Parameters:
index - Индекс в этом буфере, с которого будет записано первое целое число; должен быть неотрицательным и меньше limit()
src - Массив, из которого нужно считать целые числа
Returns:
Этот буфер
Throws:
IndexOutOfBoundsException - Если index отрицательно, не меньше limit(), или limit() - index < src.length
ReadOnlyBufferException - Если этот буфер только для чтения
Since:
13

hasArray

public final boolean hasArray()
Указывает, поддерживается ли этот буфер доступным целочисленным массивом.

Если этот метод возвращает true, то методы array и arrayOffset могут быть безопасно вызваны.

Specified by:
hasArray в классе Buffer
Returns:
true тогда и только тогда, когда этот буфер поддерживается массивом и не является только для чтения

array

public final int[] array()
Возвращает целочисленный массив, который поддерживает этот буфер (необязательная операция).

Изменения в содержимом этого буфера изменят содержимое возвращаемого массива и наоборот.

Вызовите метод hasArray перед вызовом этого метода, чтобы убедиться, что этот буфер имеет доступный поддерживающий массив.

Specified by:
array в классе Buffer
Returns:
Массив, поддерживающий этот буфер
Throws:
ReadOnlyBufferException - Если этот буфер поддерживается массивом, но является только для чтения
UnsupportedOperationException - Если этот буфер не поддерживается доступным массивом

arrayOffset

public final int arrayOffset()
Возвращает смещение в поддерживающем массиве этого буфера первого элемента буфера (необязательная операция).

Если этот буфер поддерживается массивом, то позиция буфера p соответствует индексу массива p + arrayOffset().

Вызовите метод hasArray перед вызовом этого метода, чтобы убедиться, что этот буфер имеет доступный поддерживающий массив.

Specified by:
arrayOffset в классе Buffer
Returns:
Смещение в массиве этого буфера первого элемента буфера
Throws:
ReadOnlyBufferException - Если этот буфер поддерживается массивом, но является только для чтения
UnsupportedOperationException - Если этот буфер не поддерживается доступным массивом

position

public final IntBuffer position(int newPosition)
Устанавливает позицию этого буфера. Если метка определена и больше новой позиции, то она отбрасывается.
Overrides:
position в классе Buffer
Parameters:
newPosition - Новое значение позиции; должно быть неотрицательным и не больше текущего предела
Returns:
Этот буфер
Since:
9

limit

public final IntBuffer limit(int newLimit)
Устанавливает предел этого буфера. Если позиция больше нового предела, то она устанавливается на новый предел. Если метка определена и больше нового предела, то она отбрасывается.
Overrides:
limit в классе Buffer
Parameters:
newLimit - Новое значение предела; должно быть неотрицательным и не больше ёмкости этого буфера
Returns:
Этот буфер
Since:
9

mark

public final IntBuffer mark()
Устанавливает метку этого буфера на его позиции.
Overrides:
mark в классе Buffer
Returns:
Этот буфер
Since:
9

reset

public final IntBuffer reset()
Возвращает позицию этого буфера к ранее отмеченной позиции.

Вызов этого метода не изменяет и не отбрасывает значение метки.

Overrides:
reset в классе Buffer
Returns:
Этот буфер
Since:
9

clear

public final IntBuffer clear()
Очищает этот буфер. Позиция устанавливается в ноль, предел устанавливается в ёмкость, и метка отбрасывается.

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

    buf.clear();     // Prepare buffer for reading
    in.read(buf);    // Read data

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

Overrides:
clear в классе Buffer
Returns:
Этот буфер
Since:
9

flip

public final IntBuffer flip()
Переворачивает этот буфер. Предел устанавливается на текущую позицию, а затем позиция устанавливается в ноль. Если метка определена, то она отбрасывается.

После последовательности операций чтения из канала или операций put, вызовите этот метод для подготовки к последовательности операций записи в канал или относительных операций get. Например:

    buf.put(magic);    // Prepend header
    in.read(buf);      // Read data into rest of buffer
    buf.flip();        // Flip buffer
    out.write(buf);    // Write header + data to channel

Этот метод часто используется совместно с методом compact при передаче данных из одного места в другое.

Overrides:
flip в классе Buffer
Returns:
Этот буфер
Since:
9

rewind

public final IntBuffer rewind()
Возвращает этот буфер. Позиция устанавливается в ноль, и метка отбрасывается.

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

    out.write(buf);    // Write remaining data
    buf.rewind();      // Rewind buffer
    buf.get(array);    // Copy data into array
Overrides:
rewind в классе Buffer
Returns:
Этот буфер
Since:
9

compact

public abstract IntBuffer compact()
Сжимает этот буфер (необязательная операция).

Целые числа между текущей позицией и пределом буфера, если таковые имеются, копируются в начало буфера. То есть, целое число с индексом p = position() копируется в индекс ноль, целое число с индексом p + 1 копируется в индекс один и так далее, пока целое число с индексом limit() - 1 не будет скопировано в индекс n = limit() - 1 - p. Позиция буфера затем устанавливается на n+1, а предел устанавливается на его ёмкость. Метка, если определена, отбрасывается.

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

Returns:
Этот буфер
Throws:
ReadOnlyBufferException - Если этот буфер только для чтения

isDirect

public abstract boolean isDirect()
Указывает, является ли этот целочисленный буфер прямым.
Specified by:
isDirect в классе Buffer
Returns:
true тогда и только тогда, когда этот буфер прямой

toString

public String toString()
Возвращает строку, обобщающую состояние этого буфера.
Overrides:
toString в классе Object
Returns:
Строка обобщения

hashCode

public int hashCode()
Возвращает текущий хэш-код этого буфера.

Хэш-код целочисленного буфера зависит только от его оставшихся элементов; то есть от элементов с position() до, и включая, элемент с индексом limit() - 1.

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

Overrides:
hashCode в классе Object
Returns:
Текущий хэш-код этого буфера
See Also:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(java.lang.Object)

equals

public boolean equals(Object ob)
Определяет, равен ли этот буфер другому объекту.

Два целочисленных буфера равны тогда и только тогда, когда

  1. У них одинаковый тип элементов,

  2. У них одинаковое количество оставшихся элементов, и

  3. Две последовательности оставшихся элементов, рассматриваемые независимо от своих начальных позиций, точечно равны.

Целочисленный буфер не равен любому другому типу объекта.

Overrides:
equals в классе Object
Parameters:
ob - Объект, с которым нужно сравнить этот буфер
Returns:
true тогда и только тогда, когда этот буфер равен заданному объекту
See Also:
  • Object.hashCode()
  • HashMap

compareTo

public int compareTo(IntBuffer that)
Сравнивает этот буфер с другим.

Два целочисленных буфера сравниваются путём лексикографического сравнения последовательностей оставшихся элементов, не учитывая начальную позицию каждой последовательности в соответствующем буфере. Пары int элементов сравниваются так, как если бы вызывался Integer.compare(int,int).

Целочисленный буфер не может быть сравнен с каким-либо другим типом объекта.

Specified by:
compareTo в интерфейсе Comparable<IntBuffer>
Parameters:
that - объект для сравнения.
Returns:
Отрицательное целое число, ноль или положительное целое число, если этот буфер меньше, равен или больше, чем заданный буфер

mismatch

public int mismatch(IntBuffer that)
Находит и возвращает относительный индекс первого несовпадения между этим буфером и заданным буфером. Индекс относится к position каждого буфера и будет находиться в диапазоне от 0 (включительно) до меньшего из remaining элементов в каждом буфере (исключая).

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

Parameters:
that - Буфер байтов, который будет проверен на несовпадение с этим буфером
Returns:
Относительный индекс первого несовпадения между этим и заданным буфером, иначе -1, если несовпадения нет.
Since:
11

order

public abstract ByteOrder order()
Получает порядок байтов этого буфера.

Порядок байтов целочисленного буфера, созданного путём выделения памяти или путём обертывания существующего int массива, является native order подлежащего аппаратного обеспечения. Порядок байтов целочисленного буфера, созданного как вид байтового буфера, соответствует порядку байтов байтового буфера в момент создания вида.

Returns:
Порядок байтов этого буфера

© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/nio/IntBuffer.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API