在Java中创建原始包装类的最佳方法是什么

时间:2015-09-26 20:33:15

标签: java wrapper primitive-types

我在Java中知道,下面有三种不同的方法可以将原始类型转换为相应的包装类。但是,如果性能至关重要,是否有任何首选方式?

Integer i = new Integer(5);
Integer i = 5;
Integer i = Integer.valueOf(5);

1 个答案:

答案 0 :(得分:5)

Integer.valueOf(int)的javadoc发出了一个非常明确的建议:

  

如果不需要新的Integer实例, 通常应优先使用此方法,而不是构造函数Integer(int),因为此方法可能会产生明显更好的空间和时间性能 通过缓存经常请求的值。此方法将始终缓存-128127范围内的值,并且可以缓存此范围之外的其他值。

正如Pshemo在评论中所指出的那样,SO thread中考虑了Integer i = 5;Integer i = Integer.valueOf(5);基本上会自动转换为new Integer(5)。因此,使用“胜利”不会在性能方面产生影响。

因此,如果需要考虑性能,只需避免使用{{1}}从缓存中受益。