DataLearner 标志DataLearnerAI
最新AI资讯
大模型评测
大模型列表
大模型对比
资源中心
AI工具导航

加载中...

DataLearner 标志DataLearner AI

专注大模型评测、数据资源与实践教学的知识平台,持续更新可落地的 AI 能力图谱。

产品

  • 评测榜单
  • 模型对比
  • 数据资源

资源

  • 部署教程
  • 原创内容
  • 工具导航

关于

  • 关于我们
  • 隐私政策
  • 数据收集方法
  • 联系我们

© 2026 DataLearner AI. DataLearner 持续整合行业数据与案例,为科研、企业与开发者提供可靠的大模型情报与实践指南。

隐私政策服务条款
  1. 首页/
  2. 博客列表/
  3. 博客详情

Java类型转换中valueOf方法和parseInt方法的区别

2019/08/17 17:13:26
4,754 阅读
Java编程

在Java的类型转换中,我们经常会使用valueOf或者parseInt(parseFloat/parseDouble等)来转换。这二者有什么区别呢?我们看如下的代码:

String inputValue = "15.0";

int a = Integer.valueOf(inputValue);
Integer c = Integer.valueOf(inputValue);

int b = Integer.parseInt(inputValue);
Integer d = Integer.parseInt(inputValue);

int e = new Integer(inputValue);
Integer f = new Integer(inputValue);

这里有三种类型转换的方法,包括valueOf、parseInt和new Integer。我们看一下在JetBrain IDEA编辑器中,会发现int a = Integer.valueOf(inputValue);这一行代码有黄色的告警提示:

Reduntant boxing inside Integer.valueOf(inputValue)

这一行提示的意思是Integer.valueOf(inputValue)方法内部有多余的装箱操作。

在Java中,int是基本的数据类型,Integer则是对象类型。从jdk1.5开始,Java提供了自动装箱和拆箱的功能。自动装箱就是将基本数据类型转换成对象类型的过程,例如我们定义List的时候,一般如下:

List<Integer> list = new ArrayList<>();
// 下面这行代码是错的,因为int是基本数据类型,Java集合无法使用基本数据类型,只能使用对象作为其类型
// List<int> list = new ArrayList<>();

在jdk1.5之前,这个list是无法直接添加基本数据进去的。也就是说,list.add(1);是错的,必须使用list.add(new Integer(1));。jdk1.5之后自动装箱会将int自动转换成Integer类型,上述代码不会报错了。

那么,我们继续看为啥上述代码IDEA给了报警,我们看一下parseInt方法的源代码:

public static int parseInt(String s) throws NumberFormatException {
	return parseInt(s,10);
}

不细看parseInt(s,10)的实现细节了,这里我们看到它的返回值类型是int。

我们继续看一下valueOf的实现:

public static Integer valueOf(String s) throws NumberFormatException {
	return Integer.valueOf(parseInt(s, 10));
}

我们看到,valueOf的方法是调用parseInt之后再做一次类型转换,也就是说,它多了一个装箱的操作。因此,这里我们理解IDEA的告警了,如果你想把字符串转换成int类型,那么parseInt即可,如果调用valueOf,会先调用parseInt返回int类型,然后使用Integer.valueOf()做一次装箱操作,然后返回值需要int,Java再做一次拆箱操作,显然这种方式更加低效。而如果返回值是Integer类型,则不管哪种方式都一样。这就是valueOf和parseInt的区别,也就是记住尽量使用parseInt即可。

DataLearner 官方微信

欢迎关注 DataLearner 官方微信,获得最新 AI 技术推送

DataLearner 官方微信二维码
返回博客列表

相关博客

  • 2022年了,Java和Java的生态怎么样了?
  • java爬虫
  • Java中自增操作i++与++i的区别
  • 《Effective Java 第三版》笔记之七 消除过期的对象引用
  • 《Effective Java 第三版》笔记之六 避免创建不必要的对象
  • Java入门基础笔记-11
  • Java入门基础笔记-10
  • Java入门基础笔记-9

热门博客

  • 1Dirichlet Distribution(狄利克雷分布)与Dirichlet Process(狄利克雷过程)
  • 2回归模型中的交互项简介(Interactions in Regression)
  • 3贝塔分布(Beta Distribution)简介及其应用
  • 4矩母函数简介(Moment-generating function)
  • 5普通最小二乘法(Ordinary Least Squares,OLS)的详细推导过程
  • 6使用R语言进行K-means聚类并分析结果
  • 7深度学习技巧之Early Stopping(早停法)
  • 8手把手教你本地部署清华大学的ChatGLM-6B模型——Windows+6GB显卡本地部署