import java.nio.ByteBuffer;
import java.nio.ByteOrder;

public class BufferLangsung {
    public static void main(String[] args) {
        ByteBuffer heap = ByteBuffer.allocate(16);
        ByteBuffer langsung = ByteBuffer.allocateDirect(16);

        System.out.println("heap     direct? " + heap.isDirect());
        System.out.println("langsung direct? " + langsung.isDirect());
        System.out.println("punya array belakang? " + langsung.hasArray());

        // Memori direct ditulis sebagai blok byte mentah; endianness
        // harus dinyatakan eksplisit agar sama dengan pihak native.
        ByteBuffer tampilan = langsung.order(ByteOrder.LITTLE_ENDIAN);
        tampilan.putInt(0, 0x0A0B0C0D);
        System.out.println("byte 0 sampai 3     : "
                + String.format("%02X %02X %02X %02X",
                        tampilan.get(0), tampilan.get(1),
                        tampilan.get(2), tampilan.get(3)));
    }
}
