Thursday, July 4, 2024
HomeLanguagesJavaByteBuffer allocateDirect() method in Java with Examples

ByteBuffer allocateDirect() method in Java with Examples

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);
        }
    }
}


Output:

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);
        }
    }
}


Output:

Trying to allocate negative value in ByteBuffer
Exception thrown : java.lang.IllegalArgumentException: Negative capacity: -4

Nokonwaba Nkukhwana
Experience as a skilled Java developer and proven expertise in using tools and technical developments to drive improvements throughout a entire software development life cycle. I have extensive industry and full life cycle experience in a java based environment, along with exceptional analytical, design and problem solving capabilities combined with excellent communication skills and ability to work alongside teams to define and refine new functionality. Currently working in springboot projects(microservices). Considering the fact that change is good, I am always keen to new challenges and growth to sharpen my skills.
RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments