DoubleBuffer
is a buffer class from java.nio
that manages sequences of 64-bit double-precision floating-point numbers (double
). It is used for fast, efficient, and flexible manipulation of double data in memory, suitable for high-performance scientific computations, graphics, or real-time analytics.DoubleBuffer
is abstract. Use static allocate() and wrap()Â factory methods to get instances.
Commonly Used Methods

Simple Program: Storing Double-Precision Scientific Data
import java.nio.DoubleBuffer; public class DoubleBufferSimple { public static void main(String[] args) { // Allocate DoubleBuffer for 4 double values DoubleBuffer buffer = DoubleBuffer.allocate(4); // Put some double precision data points (e.g., sensor readings) buffer.put(12.3456789); buffer.put(98.7654321); buffer.put(56.7890123); buffer.put(34.5678901); // Prepare buffer for reading buffer.flip(); System.out.println("Double precision data points:"); while (buffer.hasRemaining()) { System.out.println(buffer.get()); } } }
Problem StatementÂ
Mahesh has a physics experiment that records energy values as double precision floating points.
LotusJavaPrince is tasked to:
- Accept an array of 8 energy values (
double[]
). - Store the values in a
DoubleBuffer
. - Identify and print only those energy values greater than 50.0 units.
- Use buffer APIs only (no direct array access for filtering).
import java.nio.DoubleBuffer; public class EnergyFilter { public static void main(String[] args) { double[] energyValues = { 45.5, 67.8, 32.1, 99.9, 50.0, 75.2, 48.6, 100.5 }; // Wrap the array into DoubleBuffer DoubleBuffer buffer = DoubleBuffer.wrap(energyValues); System.out.println("Energy values > 50.0:"); for (int i = 0; i < buffer.limit(); i++) { double val = buffer.get(i); if (val > 50.0) { System.out.println("Index " + i + " → " + val); } } } }
Output
Energy values > 50.0:
Index 1 → 67.8
Index 3 → 99.9
Index 5 → 75.2
Index 7 → 100.5
Code language: CSS (css)
The DoubleBuffer
class in Java NIO provides a specialized and efficient way to handle sequences of 64-bit double-precision floating-point numbers. As a subclass of the abstract Buffer
class, it supports the essential buffer properties — position, limit, capacity, and mark — optimized for double
data.
DoubleBuffer
is especially valuable in scientific computing, financial modeling, and any domain requiring high-precision numerical calculations. It supports both heap-based and direct buffers, allowing for flexible memory management and improved performance in I/O operations.
Key features include relative and absolute get()
and put()
methods, bulk data transfers, and buffer manipulation methods like slicing, duplicating, and compacting, providing fine control over double data handling.