哪个更快?Integer.valueOf(String string) 还是 Integer.parseInt(String string)?

11
我想知道哪种方法更快?
Integer.valueOf(String string)还是Integer.parseInt(String string)
这两种方法是否有性能或内存差异?
我已经看到了Java中parseInt和valueOf之间的区别?,但它没有解释性能方面的差异。

2
请查看这个链接。 在提问之前,请先搜索谷歌和Stack Overflow。 - Matt Clark
你可以查看https://dev59.com/rGs05IYBdhLWcg3wQvke - ρяσѕρєя K
1
我的问题是关于性能的,而不是这两种方法之间的区别。 - Linaina
1
你应该重新打开这个问题,因为它涉及到性能问题,而这些问题在之前的回答中并没有被讨论到。 - Linaina
Integer.valueOf("1") 的功能等同于 Integer.valueOf(Integer.parseInt("1"));或者 Integer.parseInt("2") 等同于 Integer.valueOf("2").intValue()。由于它们返回不同的类型,因此没有一种情况是直接替换的,所以您需要询问哪个函数能够提供您实际需要的类型的性能,或者更好地了解如何为代码的较大块获取所需的性能。 - Pete Kirkham
@Linaina 如果你已经解决了这个问题,请接受下面任何一个答案。 - Rajeev N B
4个回答

20

我不会考虑性能。API 表示 Integer.valueOf(String) 的解释与其被传递到 Integer.parseInt(String) 相同,唯一的区别是前者返回一个包装了 int 类型的 Integer 对象。我会看你需要哪种类型:一个 Integer 对象还是一个 int 类型。

Integer.valueOf 返回一个 Integer 对象。

Integer.parseInt 返回一个 int 类型。


7

Integer.valueOf()使用Integer.parseInt()内部,而valueOf返回Integer对象,而parseInt()返回int。因此,parseInt()更快。


2

valueOf(String) 方法返回一个新的 Integer() 对象,而 parseInt(String) 方法返回一个基本类型的 int


可以通过运行 System.out.println(Integer.valueOf("1") == Integer.valueOf("1")); 很容易地证明这是错误的。 - Pete Kirkham

0

Integer.valueOf(String string) 方法返回一个新创建的包装对象

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

Integer.parseInt(String string) 方法返回指定的原始类型

int i = Integer.parseInt("5");


如果我从MyClass调用Integer.valueOf("2"),那么它会返回MyClass的一个新实例,因为这是调用该方法的类型? - Pete Kirkham
为什么这么关注速度,即使它们不同。我的意思是,它们的返回类型是不同的。 - Ravi
@PeteKirkham 请参考Kathy Sierra的书(SCJP指南)。而且,我相信它并不意味着返回一个整数类对象,而是返回Integer类对象。 - Ravi
@PeteKirkham,现在这样可以吗?还需要更多改进吗? - Ravi
@PeteKirkham,请告诉我我的答案哪里有问题,或者撤回你的反对。 - Ravi
正如我所指出的那样,返回的类型与调用该方法的类型无关。无论是什么调用了Integer.valueOf,它总是返回一个整数。 - Pete Kirkham

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接