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

标签 java wrapper primitive-types

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

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

最佳答案

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

If a new Integer instance is not required, this method should generally be used in preference to the constructor Integer(int), as this method is likely to yield significantly better space and time performance by caching frequently requested values. This method will always cache values in the range -128 to 127, inclusive, and may cache other values outside of this range.

正如 Pshemo 在评论中所指出的,以及本 SO thread 中所考虑的那样,Integer i = 5; 本质上会自动转换为 Integer i = Integer.valueOf(5);。因此,使用任何一个都不会在性能方面产生差异。

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

关于java - 在 Java 中创建原始包装类的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32801762/

相关文章:

java - 如何在两个客户端之间共享套接字单连接?

c++ - 使用自定义 std::ostream 包装 FILE*

go - 捕获传递给 http.Server.Serve 的 net.Listener

javascript - 符号字符串强制转换

java - 在java中,使用byte或short而不是int和float而不是double更有效吗?

java - 如何使用top linux计算java的实际内存使用情况?

java - 如何修复 Java 中 mediawiki-api 上的 "readapidenied"错误

java - 如何拆分单词并用特定字母分隔单词?

编译时的 C 函数装饰器(包装器)

objective-c - 使用 Objective c 将 void *(void * const mAudioData) 转换为 Short *?