ByteBuffer的初始化及赋值语句

ByteBuffer类没有public的构造函数,只能通过 ByteBuffer.allocate(int capacity) 或者 warp 构造对象。

如果将一个ByteBuffer 对象a赋值给另一个ByteBuffer 对象b,或者将a作为参数传入函数,都是引用传递,可以理解为c++里对象指针,都不涉及内存拷贝。

 

public static void main(String[] args) {
    ByteBuffer a = ByteBuffer.allocate(20);
    ByteBuffer b = a;
    b.putChar('1');
    func(a);
}

private static void func(ByteBuffer c){
    c.putChar('2');        
}

 

所以这三个对象任意一个被改变,其他对象也将被改变。

已通过测试验证。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
在Kotlin中,可以使用ByteBuffer类来进行字节缓冲区的初始化ByteBufferJava NIO库中的一部分,用于处理字节数据。 以下是一种常见的初始化ByteBuffer的方法: 1. 使用allocate()方法创建一个指定大小的ByteBuffer: ```kotlin val bufferSize = 1024 // 缓冲区大小 val buffer = ByteBuffer.allocate(bufferSize) ``` 2. 使用wrap()方法将现有的字节数组包装成ByteBuffer: ```kotlin val byteArray = byteArrayOf(1, 2, 3, 4, 5) // 字节数组 val buffer = ByteBuffer.wrap(byteArray) ``` 3. 使用put()方法将数据写入ByteBuffer: ```kotlin val buffer = ByteBuffer.allocate(10) buffer.put(1) // 写入一个字节 buffer.putShort(2) // 写入一个短整型数值 buffer.putInt(3) // 写入一个整型数值 buffer.putLong(4) // 写入一个长整型数值 buffer.putFloat(5.0f) // 写入一个浮点数值 buffer.putDouble(6.0) // 写入一个双精度浮点数值 ``` 4. 使用get()方法从ByteBuffer中读取数据: ```kotlin buffer.flip() // 切换为读模式 val byteValue = buffer.get() // 读取一个字节 val shortValue = buffer.getShort() // 读取一个短整型数值 val intValue = buffer.getInt() // 读取一个整型数值 val longValue = buffer.getLong() // 读取一个长整型数值 val floatValue = buffer.getFloat() // 读取一个浮点数值 val doubleValue = buffer.getDouble() // 读取一个双精度浮点数值 ``` 注意:在使用ByteBuffer时,需要注意切换读写模式(通过flip()方法),以及确保读写位置的正确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值