Java 中的 java.nio.IntBuffer 类

796 阅读4分钟

「这是我参与11月更文挑战的第9天,活动详情查看:2021最后一次更文挑战

🌊 作者主页:海拥
🌊 作者简介:🥇HDZ核心组成员、🏆全栈领域优质创作者、🥈蝉联C站周榜前十
🌊 粉丝福利:进粉丝群每周送四本书(每位都有),每月抽送各种小礼品(掘金搪瓷杯、抱枕、鼠标垫、马克杯等)

IntBuffer保存要在 I/O 操作中使用的整数值序列。该IntBuffer类提供以下四类经过长期的缓冲区操作:

  • 读取单个整数的绝对和相对 get 方法。
  • 写入单个整数的绝对和相对放置方法。
  • 相对批量 put 和 get 方法将连续的 int 序列从 int 数组或其他一些 int 缓冲区传输到此缓冲区,并从此缓冲区传输到数组。

可以通过以下方式创建 Int 缓冲区:

  • 分配():这为缓冲区的内容分配空间。
  • wrap():将现有的长数组包装到缓冲区中。

IntBuffer 类的大部分方法都直接类似于 ByteBuffer 定义的方法。

类声明:

public abstract class IntBuffer
extends Buffer
implements Comparable<IntBuffer>

IntBuffer 类的方法:

方法描述
allocate(int capacity)此方法分配一个新的 int 缓冲区。
array()此方法返回支持此缓冲区的 int 数组。
arrayOffset()此方法返回缓冲区第一个元素在此缓冲区的后备数组中的偏移量。
asReadOnlyBuffer()此方法创建一个新的只读 int 缓冲区,该缓冲区共享此缓冲区的内容。
compact()此方法压缩此缓冲区。
compareTo(IntBuffer that)此方法将此缓冲区与另一个缓冲区进行比较。
duplicate()此方法创建一个共享此缓冲区内容的新 int 缓冲区。
equals(Object ob)这个方法告诉这个缓冲区是否等于另一个对象。
get()此方法是一个相对 get 方法,并返回缓冲区当前位置的 int。
get(int index)此方法是绝对的 get 方法,并返回给定索引处的 int。
get(int[] dst)此方法是一个相对批量获取方法并返回此缓冲区。
get(int[] dst, int offset, int length)此方法相对是一个批量获取方法并返回此缓冲区。
hasArray()此方法告诉此缓冲区是否由可访问的 int 数组支持。
hashCode()此方法返回此缓冲区的当前哈希码。
isDirect()这个方法告诉这个 int 缓冲区是否是直接的。
order()此方法检索此缓冲区的字节顺序。
put(int i)此方法是一个相对放置方法并返回此缓冲区。
put(int[] src)此方法是相对批量放置方法并返回此缓冲区。
put(int[] src, int offset, int length)此方法是相对批量放置方法并返回此缓冲区。
put(IntBuffer src)此方法是相对批量放置方法并返回此缓冲区。
put(int index, int i)此方法是绝对批量放置方法并返回此缓冲区。
slice()此方法创建一个新的 int 缓冲区,其内容是此缓冲区内容的共享子序列。
toString()此方法返回一个总结此缓冲区状态的字符串。
wrap(int[] array)此方法将一个 int 数组包装到一个缓冲区中。
wrap(int[] array, int offset, int length)此方法将一个 int 数组包装到一个缓冲区中。

以下是一些演示 IntBuffer 类及其方法的程序:

示例 1:

import java.nio.*;
import java.util.*;

public class GFG {
	public static void main(String[] args)
	{
		int Capacity = 10;
		IntBuffer ib = IntBuffer.allocate(Capacity);
		ib.put(100);
		ib.put(2, 9);

		System.out.println("IntBuffer: "
						+ Arrays.toString(ib.array()));
	}
}

输出

IntBuffer: [100, 0, 9, 0, 0, 0, 0, 0, 0, 0]

示例 2:

import java.nio.*;
import java.util.*;

public class GFG {
	public static void main(String[] args)
	{
		int capacity = 10;
		try {
			IntBuffer ib = IntBuffer.allocate(capacity);
			ib.put(4);
			ib.put(2, 9);
			ib.rewind();
			boolean isArray = ib.hasArray();
			if (isArray)
				System.out.println("IntBuffer ib is"
								+ " backed by array");
			else
				System.out.println(
					"IntBuffer ib is"
					+ " not backed by any array");
		}

		catch (IllegalArgumentException e) {
			System.out.println(
				"IllegalArgumentException catched");
		}

		catch (ReadOnlyBufferException e) {
			System.out.println(
				"ReadOnlyBufferException catched");
		}
	}
}

输出

IntBuffer ib is backed by array

写在最后的

作者立志打造一个拥有100个小游戏的摸鱼网站,更新进度:40/100

我已经写了很长一段时间的技术博客,并且主要通过掘金发表,这是我的一篇关于Java 中的 java.nio.IntBuffer 类。我喜欢通过文章分享技术与快乐。你可以访问我的博客: juejin.cn/user/204034… 以了解更多信息。希望你们会喜欢!😊

💌 欢迎大家在评论区提出意见和建议!💌