不同的数据类型如何取决于 Java 中的操作系统?



我正在java中处理音频文件(在我的实验室中分配),我从文件中读取字节,然后将它们转换为原始数据类型int和short。据我所知,原始数据类型取决于编译设置和操作系统。那么他们是如何依赖的呢?java 中有不可变的数据类型吗?(我的意思是不依赖于操作系统和编译设置的数据类型)

Java 原语数据类型不依赖于操作系统。

这些是这些类型的值,它们始终相同。

>TypebytesRange
byte1-128 到 127
short2-32,768 至 32,767
int4-2,147,483,648 至 2,147,483,647

所有基元类型都在 Java 语言规范中完全定义,其中写道:

整型byteshortintlong,其值分别为8位、16位、32位和64位有符号二进制补码整数,以及char,其值是代表UTF-16代码单元的16位无符号整数(§3.1)。

浮点类型是float(其值完全对应于 32 位 IEEE 754 二进制 32 浮点数)和double(其值完全对应于 64 位 IEEE 754 二进制 64 浮点数)。

也就是说,行为上没有可观察到的差异。当然,运行时可以自由地为这些数据类型使用不同的表示形式,只要它保证行为保持不变。例如,运行时可以将byte存储为64位整数,如果它确保它的行为与byte完全相同,例如通过添加额外的指令来丢弃高56位。由于此类优化对功能没有影响,并且通常不会对内存使用产生实质性影响,因此通常不值得考虑。

最新更新