当前位置:  开发笔记 > 编程语言 > 正文

我不应该再次使用原始类型吗?

如何解决《我不应该再次使用原始类型吗?》经验,为你挑选了2个好方法。

在Java中混合使用原始数据类型和它们各自的包装类可能会导致很多错误.以下示例说明了此问题:

int i = 4;
...
if (i == 10)
  doStuff();

稍后你会想要变量i被定义或未定义,所以你将上面的实例改为:

Integer i = null;

现在,相等检查失败.

始终使用原始包装类是不是很好的Java实践?显然它会早点出现一些错误,但这有什么缺点?它是否会影响性能或应用程序的内存占用?有没有鬼鬼祟祟的陷阱?



1> Michael Dear..:

使用盒装类型确实存在性能和内存问题.

在进行比较时(例如(i == 10)),java必须在进行比较之前将类型解包.即使使用i.equals(TEN)方法调用,也比==语法更昂贵且(IMO)更加丑陋.

重新存储,对象必须存储在堆上(这也会影响性能)以及存储值本身.

鬼鬼祟祟的骗局?i.equals(j)当我是null.

我总是用原语,除非它可能null,但总是检查null在这些情况下比较之前.



2> rmeador..:

首先,从使用原语切换到使用对象只是为了获得将其设置为null的能力可能是一个糟糕的设计决策.我经常与我的同事讨论null是否是一个哨兵价值,我的意见通常是它不是(因此不应该像哨兵价值那样被禁止),但在这种特殊情况下你会去用它作为哨兵价值.请不要.创建一个布尔值,指示您的整数是否有效,或者创建一个将布尔值和整数包装在一起的新类型.

通常,当使用较新版本的Java时,我发现我不需要显式创建或转换为基元的对象版本,因为自动装箱支持在1.5中添加了一些时间(可能是1.5本身).

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有