import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;

public class TipeBuffer {
    public static void main(String[] args) {
        ByteBuffer data = ByteBuffer.allocate(16);
        data.putInt(1_000_000);
        data.putLong(99L);
        data.put((byte) 'A');
        System.out.println("posisi setelah tulis : " + data.position());

        data.flip();
        System.out.println("int  : " + data.getInt());
        System.out.println("long : " + data.getLong());
        System.out.println("byte : " + (char) data.get());

        byte[] salinan = "Budi".getBytes(StandardCharsets.UTF_8);
        ByteBuffer bungkus = ByteBuffer.wrap(salinan);
        System.out.println("wrap  : pos=" + bungkus.position()
                + " lim=" + bungkus.limit()
                + " cap=" + bungkus.capacity());

        byte[] hasil = new byte[bungkus.remaining()];
        bungkus.get(hasil);
        System.out.println("pulih : " + new String(hasil, StandardCharsets.UTF_8));

        System.out.println("heap    : " + ByteBuffer.allocate(8).isDirect());
        System.out.println("direct  : " + ByteBuffer.allocateDirect(8).isDirect());
    }
}
