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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。