【发布时间】:2015-08-25 22:42:25
【问题描述】:
一般来说,如果在 64 位架构上编程,还有什么理由在 Java 中仍然使用 int 而不是 long?
特别是在我的情况下:
我使用int 变量映射到Oracle DB 表上NUMBER 类型的键(从1 开始并为每个新条目递增的序号)。
DB 类型NUMBER 比int 具有更高的精度,因此在Java 端对此建模的正确方法是long。
出于效率原因,我坚持使用int,因为可能我们在表中永远不会有这么多条目,以至于需要int 可以表示的更多。
另一方面,由于大多数现代机器无论如何都是 64 位的,因此使用 long 而不是 int 在 Java 方面的效率应该不会有所不同,对吧?我想如果你将大量的键列表加载到内存中,它会在内存方面有所不同,但我们不做这种操作。
【问题讨论】:
-
我不想浪费内存,如果它适合
int -
@UmaKanth 虽然有效,但您可能会遇到Gangnam-Style problem。如果内存不是问题并且您不能保证防止溢出,请使用
long。虽然我不确定longs 是否针对 64 位 JVM 进行了优化(临时,我找不到任何确认/反驳支持的参考资料)。 -
您如何确定您不会永远必须回到 32 位计算机?
-
@KevinWorkman 这是一个权衡。如果您回到 32 位机器,使用
long,您的代码会运行得更慢。如果您使用int,您的代码运行“不安全”(当然,longs 也可能溢出,但这需要更长的时间)。 -
在 64 位 CPU 上的 long 和 int 操作应该执行类似的操作。
标签: java 64-bit 32bit-64bit