【问题标题】:Which one is faster? Integer.valueOf(String string) or Integer.parseInt(String string)?哪个更快? Integer.valueOf(String string) 还是 Integer.parseInt(String string)?
【发布时间】:2012-12-05 16:16:12
【问题描述】:

我想知道哪种方法更快?

Integer.valueOf(String string)Integer.parseInt(String string)?

这两种方法在性能或内存上有什么区别吗?

我见过Difference between parseInt and valueOf in java?,但这并不能解释性能方面的差异。

【问题讨论】:

  • 见[这个][1]。请在提问之前搜索 google 和 SO。 [1]:stackoverflow.com/questions/508665/…
  • 我的问题是关于性能的。与这些方法之间的区别无关。
  • 您应该重新打开问题。因为它与提到的答案中未讨论的性能有关。
  • Integer.valueOf("1") 在功能上等同于Integer.valueOf(Integer.parseInt("1"));或者Integer.parseInt("2") 等价于Integer.valueOf("2").intValue()。因为它们返回不同的类型,所以不存在直接替换的情况,因此您需要询问任何一个为您提供实际需要的类型的性能,或者更好地了解如何获得更大块所需的性能你的代码。

标签: java android


【解决方案1】:

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

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

Integer.parseInt(String string) 返回命名的primitive

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

【讨论】:

  • 所以如果我从 MyClass 调用 Integer.valueOf("2"),那么它会返回一个新的 MyClass 实例,因为那是调用该方法的类型?
  • 为什么这么多关注,哪一个更快,甚至它们都不一样。我的意思是,它们的返回类型不同。
  • @PeteKirkham 请参考 kathy sierra 的书(SCJP 指南)。而且,我相信,这并不意味着它返回 Integer 类对象。
  • @PeteKirkham,现在可以了吗?还是需要更多改进??
  • @PeteKirkham,要么告诉我我的回答有什么问题,要么撤消你的反对意见。
【解决方案2】:

Integer.valueOf() 在内部使用Integer.parseInt()valueOf 返回Integer Object,而parseInt() 返回int。 所以parseInt() 更快。

【讨论】:

    【解决方案3】:

    valueOf(String) 返回一个new Integer() 对象,而parseInt(String) 返回一个原始int

    【讨论】:

    • 这很容易通过运行System.out.println(Integer.valueOf ( "1" ) == Integer.valueOf ( "1" ));来证明是错误的
    【解决方案4】:

    我不会看性能。 API 表示 Integer.valueOf(String) 的解释与传递给 Integer.parseInt(String) 的方式相同,只是它被包装到 Integer 中。我会看看你需要什么:Integerint

    Integer.valueOf 返回一个Integer

    Integer.parseInt 返回一个int

    【讨论】:

      猜你喜欢
      • 2012-03-20
      • 2012-05-17
      • 2013-05-30
      • 2021-12-26
      • 1970-01-01
      • 2021-12-07
      • 1970-01-01
      • 1970-01-01
      • 2017-08-22
      相关资源
      最近更新 更多