在Java中创建基本包装类的最佳方法是什么
我知道在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),因为通过缓存频繁请求的值,此方法可能会产生显著更好的空间和时间性能。此方法将始终缓存
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)
可能会更快,因为您将跳过搜索缓存的整数。可能会重复