[java][nio]从ByteBuffer中获取根本数据类型
[java][nio]从ByteBuffer中获取基本数据类型
import java.nio.ByteBuffer; /** * * 获取基本数据类型. * */ public class GetData { private static final int BSIZE = 1024; public static void main(String[] args) { ByteBuffer bb = ByteBuffer.allocate(BSIZE); int i = 0; printBuffer(bb); //ByteBuffer实例中每个字节自动分配为0 while(i++ < bb.limit()){ int get = bb.get(); //System.out.println("get: " + get);//get=0 if(get != 0){ System.out.println("nonzero"); } } System.out.println("i = " + i);//1025 printBuffer(bb);//position=1024 System.out.println("--------------"); bb.rewind();//指针移到数据头 printBuffer(bb);//position=0 //保存并读取一个字符数组 bb.asCharBuffer().put("Hello world!!"); char c ; while((c = bb.getChar()) != 0 ){ System.out.print(c + " "); } printBuffer(bb);//position=28 bb.rewind(); //保存并读取一个short bb.asShortBuffer().put((short)4583442); System.out.println(bb.getShort()); printBuffer(bb);//position=2 bb.rewind(); //保存并读取一个int bb.asIntBuffer().put(856522114); System.out.println(bb.getInt()); printBuffer(bb);//position=4 bb.rewind(); //保存并读取一个long bb.asLongBuffer().put(1286522114); System.out.println(bb.getLong()); printBuffer(bb);//position=8 bb.rewind(); //保存并读取一个float bb.asFloatBuffer().put(1286522114.5F); System.out.println(bb.getFloat()); printBuffer(bb);//position=4 bb.rewind(); //保存并读取一个double bb.asDoubleBuffer().put(1286522114.88); System.out.println(bb.getDouble()); printBuffer(bb);//position=8 bb.rewind(); } static void printBuffer(ByteBuffer bb){ System.out.println("limit: " + bb.limit()); System.out.println("position: " + bb.position()); System.out.println("capacity: " + bb.capacity()); } }