说到Java的字节对齐方式(ByteOrder),包括两个层面的解释。
一是操作系统层次(或说CPU层次),这个要看是何种OS了,可以使用java.nio.ByteOrder.nativeOrder();方法取得。返回值为:LITTLE_ENDIAN或BIG_ENDIAN。大部分系统为LITTLE_ENDIAN。
另外一个是Java层次,JVM使用了BIG_ENDIAN方式,即数据的高字节,对齐存放到内存的低地址上。
例如:对于0x1234567890abcdef这个long数据,高字节为0x12存放到低地址上,在内存存放的顺序也是(地址从低到高)
12 | 34 | 56 | 78 | 90 | ab | cd | ef |