我正在寻找一个在32位和64位系统上运行的
java应用程序,它主要处理IP地址.这些IP地址保持为整数,正常类型在64位平台上浪费了大量内存(是的,内存使用已经被证明是一个问题).即使在x64体系结构上,如何声明32位整数值仍然保持在32位?
因为我是一个java新手,如果有一个已经设计用于处理IP地址的内置类型,请随时指出我;)
解决方法
Java具有特定的数据类型宽度,以实现可移植性.即使在64位平台上,整数也是32位宽.
Java language specification状态为
quite 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具有Inet4Address和Inet6Address,具体取决于您的需求(以及它们的共同祖先,InetAddress).