提问人:Sanku 提问时间:7/13/2016 更新时间:4/16/2023 访问量:200
Java 运行时环境是否可以自由使用原始数据类型所需的任何大小?
Is java run-time environment free to use whatever size it wants for primitive data types?
问:
我正在阅读《Java-The Complete Reference》一书,我看到了一句话,上面写着
“不应将整数类型的宽度视为它消耗的存储量,而应将其视为它为该类型的变量和表达式定义的行为。java 运行时环境可以自由使用任何它想要的大小,只要类型的行为符合你声明的格式”。
这是否意味着 java 可以自由选择整数数据类型的大小,通常为 4 个字节?
答:
8赞
Arjan
7/13/2016
#1
“不应将整数类型的宽度视为数量 它消耗的存储,
JVM 可以在 32 位实现上以 32 位存储 Java 16 位,以提高性能...short
而是作为它为变量和表达式定义的行为 那种类型。
...但它的行为类似于 16 位有符号 2 的补码整数,无论它如何存储在内存中。
Java 运行时环境可以自由使用任何大小 它想要,只要类型的行为符合你声明的那样”。
如果一个程序需要在任何 JVM 上运行,那么所有 JVM 都需要以相同的方式处理该程序及其整数。但是,对于Java开发人员来说,如何实现JVM并不重要,因为Java 开发人员可以进行特定于体系结构的优化。
评论
1赞
Basil Bourque
7/13/2016
Arjan 的解释说得非常好,也很正确。我只想补充一点,这是 Java 语言和 JVM 所有规范背后的基本思想:定义所需的行为,但将实现细节留给实现者。这些年来,Java 已经有许多实现,它们的行为都相同,但在“幕后”方面却有很大的不同。
评论