java - 我应该永远不再使用原始类型吗?

标签 java types

在 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/

相关文章:

java - 从当前日期开始以秒为单位获取日期时间

java - 递归条件和基本情况确认

oracle - 在 GROUP BY 查询中将值聚合到表类型中

c# - 查看类型是否可实例化

java - 从 ArrayList 获取随机数?

java - $avg 未返回平均值

r - 在 R 中执行 := by group in a data. 表时如何更改目标列的类型?

C++ 环境变量

java - 阅读 Core Java 第 11 版时关于 **类型删除机制** 的问题

java - 使用未初始化的最终字段 - 带/不带 'this.' 限定符