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

在Java中创建基本包装类的最佳方法是什么,java,wrapper,primitive-types,Java,Wrapper,Primitive Types,我知道在Java中,下面有三种不同的方法将基本类型转换为相应的包装器类。但是,如果性能至关重要,是否有任何首选方法 Integer i = new Integer(5); Integer i = 5; Integer i = Integer.valueOf(5); javadocs for emit提供了一个非常明确的建议: 如果不需要新的Integer实例,此方法通常应优先于构造函数Integer(int),因为通过缓存频繁请求的值,此方法可能会产生显著更好的空间和时间性能。此方法将始终缓存

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

Integer i = new Integer(5);
Integer i = 5;
Integer i = Integer.valueOf(5);
javadocs for emit提供了一个非常明确的建议:

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

正如注释中的
Pshemo
所指出的,正如本文所考虑的,
整数i=5基本上自动转换为
整数i=Integer.valueOf(5)。因此,使用这两种方法都不会对性能产生影响

因此,如果性能是一个问题,只需避免使用
新整数(5)
即可从缓存中获益。

的javadocs提供了一个非常明确的建议:

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

正如注释中的
Pshemo
所指出的,正如本文所考虑的,
整数i=5基本上自动转换为
整数i=Integer.valueOf(5)。因此,使用这两种方法都不会对性能产生影响

因此,如果性能是一个问题,只需避免使用
新整数(5)
即可从缓存中获益。

可能重复“if performance is critical”(如果性能至关重要)这一点可能取决于您正在运行的任务<代码>整数i=5
Integer i=Integer.valueOf(5)相同
由于在
-128127
范围内对整数进行了内部缓存,因此您可以重用
Integer
类的这些实例,从而使用更少的空间。但如果您不关心空间,则
新整数(5)
可能会更快,因为您将跳过对缓存整数的搜索。可能重复的“if performance is critical”(如果性能至关重要)的可能重复可能取决于您正在运行的任务<代码>整数i=5
Integer i=Integer.valueOf(5)相同
由于在
-128127
范围内对整数进行了内部缓存,因此您可以重用
Integer
类的这些实例,从而使用更少的空间。但是如果您不关心空间,那么
新整数(5)
可能会更快,因为您将跳过搜索缓存的整数。可能会重复