【发布时间】:2013-12-24 19:51:36
【问题描述】:
在 64 位机器上,Java 中 int 的大小是 32 位还是 64 位?
【问题讨论】:
标签: java
在 64 位机器上,Java 中 int 的大小是 32 位还是 64 位?
【问题讨论】:
标签: java
32 位。整数的大小不随底层计算机而变化,这是 Java 语言的特性之一。见the relevant section of the spec。
【讨论】:
int 大小从应用程序的规模增强角度来看是一个很大的缺点?因为如果我有 int 类型model_number 这是short 类型parent_id 和short 类型model_id 的位级连接。如何在现有应用程序中将model_number 增强为 64 位?使用long 类型需要在企业应用程序中进行大量代码更改。你认为首先使用int 是一个错误的决定吗?
parent_id 和model_id 的short 类型更改为int,那么我想将model_number 视为64 位。
parent_id 和 model_id,您也必须更改 model_number。
model_number 位于数据库中以保持持久性。所以,我需要在存储到数据库之前在位级别进行连接。我的问题是,我如何通过将long 声明为model_number 之后将其设置为 64 位?为此,我需要更改使用 32 位 int 的现有完整代码。
原始数据的大小是virtual machine specification, 的一部分并且不会改变。将改变的是对象引用的大小,从 32 位变为 64。因此,相同的程序在 64 位 JVM 上将需要更多内存。其影响取决于您的应用程序,但可能非常重要。
【讨论】:
如果需要 64 位整数,请使用 long。
【讨论】:
32 位。 Java 的运行方式与运行它的机器或操作系统无关,至少对于原始数据类型来说确实如此。
【讨论】:
这就是“编译一次,随处运行”口号的结果之一:Java 执行独立于底层硬件字长和字节序; JVM 在任何地方都以相同的方式工作。
这种独立性保证比尝试将操作系统抽象出来要好得多;-)
【讨论】:
是的,它是 32 位
【讨论】:
另一个通常被误解的事实是尺寸 这些数据类型将始终相同,无论 我们的程序正在运行的架构。所以你可能正在运行你的 在 64 位机器中编程,但 int 将始终是 32 位 long 所以它将具有相同的范围。这对于 C# 和 Java。
这是关于此事的完整文章:
【讨论】: