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');
}
所以这三个对象任意一个被改变,其他对象也将被改变。
已通过测试验证。