ByteOrder 是 java.nio package 中的一个类。一般来说,Byte Order 是指 ByteOrder 的枚举。
- 在java中,有像int、char、float、double这样的原始数据类型,它们将以一定数量的字节将数据存储在主内存中。
- 例如,一个字符或短整数占用 2 个字节,一个 32 位整数或浮点值占用 4 个字节,一个长整数或双精度浮点值占用 8 个字节。
- 这些多字节类型之一的每个值都存储在一系列连续的内存位置中。
- 这里,考虑一个长整数,占用8个字节,这8个字节在内存中(从低地址到高地址)可以存储为13,17,21,25,29,34,38,42;这种排列称为大端顺序(最高有效字节,“big” 末尾,存储在最低地址)。
- 或者,这些字节可以存储为 42,38,34,29,25,21,17,13;这种排列称为小端顺序(最低有效字节,“little” 结尾,存储在最低地址到最高地址)。
Note: ByteOrder Class extends Object Class which is the root of the class hierarchy.
ByteOrder类有两个字段
场地 | 说明 |
---|---|
BIG_ENDIAN | 该字段将表示大端字节顺序。 |
LITTLE_ENDIAN | 这是一个常量字段,表示小端字节顺序。 |
用法:类声明
public final class ByteOrder extends Object {}
该类的方法如下:
方法 | 说明 |
---|---|
nativeOrder() |
该方法的定义是通过按照与 JVM 相同的顺序分配直接缓冲区来提高 JVM 的性能。 此方法返回运行该 Java 虚拟机的硬件的本机字节顺序。 |
toString() | 该方法返回以指定方式定义的字符串。 |
执行:
示例
Java
// Java Program to demonstrate ByteOrder Class
// Importing input output and utility classes
import java.io.*;
// Importing required classes from java.nio package
// for network linking
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.IntBuffer;
// Main class
public class GFG {
// Main driver method
public static void main(String[] args) throws Exception
{
// Here object is created and allocated and
// it with 8 bytes of memory
ByteBuffer buf = ByteBuffer.allocate(8);
// This line of code prints the os order
System.out.println("OS Order :- "
+ ByteOrder.nativeOrder());
// This line of code prints the ByteBuffer order
// Saying that whether it is in BIG_ENDIAN or
// LITTLE_ENDIAN
System.out.println("ByteBuffer Order :- "
+ buf.order());
// Here the conversion of int to byte takes place
buf.put(new byte[] { 13, 17, 21, 25 });
// Setting the bit set to its complement using
// flip() method of Java BitSet class
buf.flip();
IntBuffer integerbuffer = buf.asIntBuffer();
System.out.println("{" + integerbuffer.position()
+ " : " + integerbuffer.get()
+ "}");
integerbuffer.flip();
buf.order(ByteOrder.LITTLE_ENDIAN);
integerbuffer = buf.asIntBuffer();
System.out.println("{" + integerbuffer.position()
+ " : " + integerbuffer.get()
+ "}");
}
}
输出
OS Order :- LITTLE_ENDIAN ByteBuffer Order :- BIG_ENDIAN {0 : 219223321} {0 : 420811021}
Note:
- The order of a newly-created byte buffer is always BIG_ENDIAN.
- One can have different OS Order for different machines.
相关用法
- Java java.nio.ByteBuffer用法及代码示例
- Java java.nio.Buffer用法及代码示例
- Java java.nio.IntBuffer用法及代码示例
- Java java.nio.file.FileStore用法及代码示例
- Java java.nio.FloatBuffer用法及代码示例
- Java java.nio.file.LinkPermission用法及代码示例
- Java java.nio.ShortBuffer用法及代码示例
- Java java.nio.DoubleBuffer用法及代码示例
- Java java.nio.channels.spi.SelectorProvider用法及代码示例
- Java java.nio.charset.CoderResult用法及代码示例
- Java java.nio.charset.CodingErrorAction用法及代码示例
- Java java.nio.channels.spi.AsynchronousChannelProvider用法及代码示例
- Java java.nio.charset.CharsetEncoder用法及代码示例
- Java java.nio.file.attribute.AclEntry用法及代码示例
- Java java.nio.charset.Charset用法及代码示例
- Java java.nio.LongBuffer用法及代码示例
- Java java.nio.channels.Selector用法及代码示例
- Java java.nio.file.spi.FileTypeDetector用法及代码示例
- Java java.nio.file.attribute.FileTime用法及代码示例
- Java java.nio.file.SimpleFileVisitor用法及代码示例
- Java java.nio.file.FileSystems用法及代码示例
- Java java.nio.CharBuffer用法及代码示例
- Java java.nio.file.FileSystem用法及代码示例
- Java java.nio.file.Paths用法及代码示例
- Java java.net.SocketException用法及代码示例
注:本文由纯净天空筛选整理自pranaythanneru大神的英文原创作品 java.nio.ByteOrder Class in Java。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。