ByteBuffer allocateDirect() method in Java with Examples - GeeksforGeeks

19 Sep, 2018
The allocateDirect() method of java.nio.ByteBuffer class is used Allocates a new direct byte buffer.
The new buffer’s position will be zero, its limit will be its capacity, its mark will be undefined, and each of its elements will be initialized to zero. Whether or not it has a backing array is unspecified.
This method is 25%-75% faster than allocate() method.
Syntax:
public static ByteBuffer allocateDirect(int capacity)
Parameters: This method takes capacity, in bytes, as parameter.
Return Value: This method returns the new byte buffer.
Exception: This method throws IllegalArgumentException, If the capacity is a negative integer.
Below are the examples to illustrate the allocateDirect() method:
Examples 1:
// Java program to demonstrate// allocateDirect() method  import java.nio.*;import java.util.*;  public class GFG {    public static void main(String[] args)    {          // Declaring the capacity of the ByteBuffer        int capacity = 4;          // Creating the ByteBuffer        try {              // creating object of ByteBuffer            // and allocating size capacity            ByteBuffer bb = ByteBuffer.allocateDirect(capacity);              // creating byte array of size capacity            byte[] value = { 20, 30, 40, 50 };              // wrap the byte array into ByteBuffer            bb = ByteBuffer.wrap(value);              // print the ByteBuffer            System.out.println("Direct ByteBuffer:  "                               + Arrays.toString(bb.array()));              // print the state of the buffer            System.out.print("\nState of the ByteBuffer : ");            System.out.println(bb.toString());        }          catch (IllegalArgumentException e) {            System.out.println("Exception thrown : " + e);        }          catch (ReadOnlyBufferException e) {            System.out.println("Exception thrown : " + e);        }    }}
Direct ByteBuffer:  [20, 30, 40, 50]

State of the ByteBuffer : java.nio.HeapByteBuffer[pos=0 lim=4 cap=4]

Examples 2: To show IllegalArgumentException
// Java program to demonstrate// allocateDirect() method  import java.nio.*;import java.util.*;  public class GFG {    public static void main(String[] args)    {          // Declaring the capacity        // with negative value        int capacity = -4;          // Creating the ByteBuffer        try {              // creating object of ByteBuffer            // and allocating size capacity              System.out.println("Trying to allocate"                               + " negative value in ByteBuffer");            ByteBuffer bb = ByteBuffer.allocateDirect(capacity);              // creating byte array of size capacity            byte[] value = { 20, 30, 40, 50 };              // wrap the byte array into ByteBuffer            bb = ByteBuffer.wrap(value);              // print the ByteBuffer            System.out.println("Direct ByteBuffer:  "                               + Arrays.toString(bb.array()));              // print the state of the buffer            System.out.print("\nState of the ByteBuffer : ");            System.out.println(bb.toString());        }          catch (IllegalArgumentException e) {            System.out.println("Exception thrown : " + e);        }          catch (ReadOnlyBufferException e) {            System.out.println("Exception thrown : " + e);        }    }}
Trying to allocate negative value in ByteBuffer
Exception thrown : java.lang.IllegalArgumentException: Negative capacity: -4

Java-ByteBuffer
Java-Functions
Java-NIO package
Java
Java
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Object Oriented Programming (OOPs) Concept in Java
HashMap in Java with Examples
Stream In Java
Interfaces in Java
How to iterate any Map in Java
ArrayList in Java
Initialize an ArrayList in Java
Stack Class in Java
Multidimensional Arrays in Java
Singleton Class in Java