最佳实践:使用什么,包装类或原始数据类型?

时间:2012-12-16 14:33:11

标签: java

在Java中,我们有原始数据类型和一堆包装类。我的问题是什么时候用什么?我知道当我们需要创建集合时,我们需要使用包装类,但除此之外是否有其他特定情况应该使用包装类?

另外,除非绝对必要,否则应始终使用原始数据类型?

例如,如果我正在创建一个具有整数和布尔属性的类:

Class MyClass {
    ...
    private Integer x;
    private Boolean y;
    ...
}

OR

Class MyClass {
    ...
    private int x;
    private boolean y;
    ...
}

哪些应该更经常使用?在什么情况下应该使用另一个?

5 个答案:

答案 0 :(得分:20)

除非您没有其他选择,否则请使用基元类型。它不可为空的事实将防止许多错误。而且他们也更快。

除了集合之外,包装器类型通常用于表示可以为空的值(例如,来自数据库可为空的列)。

答案 1 :(得分:5)

this article谈论包装类,他们说:

  

Java API中的包装器类有两个主要目的:

     

1-提供一种机制来“包装”对象中的原始值,以便这样做   基元可以包含在为对象保留的活动中,   比如被添加到集合中,或者从带有的方法返回   对象返回值。

     

2-提供各种实用功能   原语。这些功能大多与各种功能有关   转换:将原语转换为String对象和从String对象转换   将基元和String对象转换为不同的基础   (或基数),例如二进制,八进制和十六进制。

答案 2 :(得分:3)

包装类是不可变的,因此没有setter方法。每次要更改其值时,都必须创建一个新对象。这会产生不必要的对象。 int原语只表示数字的位。您没有创建任何新对象。因此,我建议在不使用集合时使用原语。

答案 3 :(得分:1)

当您的系统产生必须考虑的不确定性水平时,包装类非常有用。例如,在数据包捕获程序(如wireshark)中使用布尔值,如果无法确定是否已从发送方修改数据包,则允许您传递空值。特别是在您能够确定其他数据包操作的情况下。

答案 4 :(得分:0)

在c#中使用原始类型时,我更喜欢在访问静态成员时在声明和.NET名称中使用c#别名。这只是个人偏好。这两个名字绝对相同。

int x = Int32.Parse("123");