【问题标题】:Will an int be 32bit and a long 64bit regardless of whether the system is 32 or 64 bit?无论系统是 32 位还是 64 位,int 会是 32 位还是 long 64 位?
【发布时间】:2013-08-02 13:12:00
【问题描述】:

在 java 中,无论架构是 32 位还是 64 位,是否保证 int 始终为 32 位大小和 long 为 64 位大小?

【问题讨论】:

  • 我是通过挖掘回答的?见:stackoverflow.com/help/self-answer
  • 我在问它的​​同时回答了它。当您提出问题并且理由是增加 SO 上可用的内容时,有一个选项。没有理由说 SO 不应该有“所有答案”,即使是简单的问题。
  • 我看不出这个问题是如何提供答案的。这个页面的答案给了我我也在寻求的答案。实际上,我在通过阅读docs.oracle.com/javase/tutorial/java/nutsandbolts/… 找到此页面之前“深挖”:“深挖”并没有提供答案;这个页面做到了。太糟糕了,我不能对@Tala cmets 投反对票;他们听起来很粗鲁。

标签: java int 32bit-64bit long-integer


【解决方案1】:

Java 是独立于平台的。所以int 是 32 位,long 是 64 位。

【讨论】:

    【解决方案2】:

    int 在 Java 中始终是 32 位的。无论操作系统类型/架构/什么。

    【讨论】:

    • 在 32 位操作系统上,64 位长度是否必须通过将其拆分为两个 32 位内存地址之类的方法来存储?
    • @Cellepo,简单地说,没有。
    • 没有进一步的解释(除了“简单”的思想),我只能得出结论,我所问的实际上似乎更接近事实:“计算机是否是无关紧要的32 位或 64 位,RAM 总是被视为线性内存链。这条链上的不同点包含变量的不同字节,即不同的内存地址包含变量的不同字节。 [quora.com/…
    • 那个 Quora 链接也引用了,“因此,存储变量与 cpu 是 32 位还是 64 位这一事实无关。”所以 32 位操作系统不一定有 32 位地址,但这似乎有点无关紧要 - 如果系统内存地址(通常)小于 64 位(这似乎独立于操作系统位架构 [32 vs 64]),似乎Java long 会被地址分割...如果有更准确的解释,我会全神贯注。
    【解决方案3】:

    Java Tutorial page on primitive data types 指定了固定大小,没有提及对底层架构有任何影响

    int:int 数据类型是一个 32 位有符号二进制补码整数。它的最小值为 -2,147,483,648,最大值为 2,147,483,647(含)。

    long:long 数据类型是一个 64 位有符号二进制补码整数。 它的最小值为 -9,223,372,036,854,775,808,最大值为 价值9,223,372,036,854,775,807(含)。使用此数据类型 当您需要比 int 提供的值范围更广的值时。

    【讨论】:

    • 我完全同意,同样的页面/原因是我最终不得不找到这个页面的原因。谢谢你的提问。
    猜你喜欢
    • 1970-01-01
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 2016-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多