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

Ens*_*der 0 java wrapper primitive-types

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

Integer i = new Integer(5);
Integer i = 5;
Integer i = Integer.valueOf(5);
Run Code Online (Sandbox Code Playgroud)

sst*_*tan 5

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

如果Integer不需要新实例,则通常应优先使用此方法Integer(int),而不是构造函数,因为此方法可能通过缓存频繁请求的值来显着提高空间和时间性能.此方法将总是在范围内的缓存值-128127,包容性,并可以缓存在这个范围之外的其他值.

正如Pshemo在评论中指出的那样,并且正如在这个SO线程中所考虑的那样,Integer i = 5;基本上会自动转换为Integer i = Integer.valueOf(5);.所以使用任何一种都不会在性能方面产生影响.

因此,如果要考虑性能,只需避免使用new Integer(5)缓存.