在 Java 中混合使用原始数据类型及其各自的包装类会导致很多错误。下面的例子说明了这个问题:
int i = 4;
...
if (i == 10)
doStuff();
稍后您认为您希望变量 i 已定义或未定义,因此您将上述实例化更改为:
Integer i = null;
现在相等性检查失败了。
总是使用原始包装类是 Java 的好习惯吗?显然,它会尽早消除一些错误,但这样做有什么缺点呢?它会影响性能或应用程序的内存占用吗?有什么偷偷摸摸的陷阱吗?
最佳答案
使用装箱类型确实同时存在性能和内存问题。
在进行比较时(例如 (i == 10)
),java 必须在进行比较之前对类型进行拆箱。即使使用 i.equals(TEN)
也会使用方法调用,这比 == 语法更昂贵且 (IMO) 更丑陋。
关于内存,对象必须存储在堆上(这也会影响性能)以及存储值本身。
偷偷摸摸的陷阱? i.equals(j)
当 i 为 null
时。
我总是使用原语,除非它可能是null
,但在那些情况下比较之前总是检查null
。
关于java - 我应该永远不再使用原始类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/124148/