java - 如何在 java 中声明一个 32 位整数?

标签 java integer 32bit-64bit

我正在查看一个在 32 位和 64 位系统上运行的 java 应用程序,它主要处理 IP 地址。这些 IP 地址以整数形式保存,而正常类型在 64 位平台上会浪费大量内存(是的,内存使用已被证明是这里的一个问题)。如何声明即使在 x64 架构上也保持 32 位的 32 位整数值?

因为我是一个 Java 新手,如果有一个内置类型已经设计用于处理 IP 地址,请随时向我指出;)

最佳答案

Java 的数据类型具有特定 宽度,以实现可移植性。即使在 64 位平台上,整数也是 32 位宽。 Java language specificationquite clearly (在我看来,稍微解释一下以提高可读性):

The integral types are byte, short, int, and long, whose values are respectively 8-bit, 16-bit, 32-bit and 64-bit signed two's-complement integers, and char, whose values are 16-bit unsigned integers representing UTF-16 code units.

这可以说是由于在 C 中发现了许多可移植性问题,Java 希望避免整数的不同宽度(甚至编码,如二进制补码、个的补码和符号/大小),特别是因为它是为了运行在尽可能多的不同平台上。

关于处理 IP 地址的内置类型,Java 有 Inet4AddressInet6Address ,取决于您的需求(以及它们的共同祖先 InetAddress )。

关于java - 如何在 java 中声明一个 32 位整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4065776/

相关文章:

Java - 将文件中的整数相加

python - 如何在 64 位 CentOS 6 上编译运行 32 位 Python?

ruby exec powershell 窗口

Java - 使用相同的方法和不同的返回类型实现多个接口(interface)

java - 临时变量的效率(例如java)

java - 结果重定向不适用于 jsp

java - 在 Java 中打印整数数组的唯一值的总和

java - 将 byte[] 写入 RMS 列

string - 在golang中将子字符串转换为int

c - 将 m32 标志添加到 Makefile 时 select() 失败