【Java】Integer.parseInt() & Integer.valueOf() & new Integer()

本文详细解析了Java中Integer.parseInt(), Integer.valueOf(String)及valueOf(int)三个方法的区别。parseInt返回int基本类型;valueOf(String)返回Integer对象并调用parseInt();valueOf(int)返回Integer对象,且对于-128到127之间的数会使用缓存。
摘要由CSDN通过智能技术生成

这种题目在Java面试题中倒是经常看到,了解它们的区别有时候找bug可能还有些用。下面从源码的角度分析它们的区别。

Integer.parseInt()

如下图是parseInt(String s)和parseInt(String, int)的源码。可以看到parseInt返回的是一个int基础类型,调用了parseInt(s, 10)。

这里写图片描述

这里写图片描述

Integer.valueOf()

valueOf()有多个重载版本,常用的可能是valueOf(String)和valueOf(int),我们分别说之。

valueOf(String)

下图是valueOf(String)的源码,它返回的是Integer对象,在实现上是调用了parseInt(s, 10),然后再调用valueOf(int)。
这里写图片描述

valueOf(int)

下图是valueOf(int)的实现,返回的同样是Integer对象,但是注意划线的地方,内部类缓存了-128~127的Integer对象,如果数值范围在[-128, 127],则直接返回缓存的对象。否则,new一个新对象。
这里写图片描述

分析到这,大家应该对三者直接的区别有了一个了解。
1. parseInt返回的是基本类型int
2. valueOf返回的是Integer类型,但是如果数值范围在[-128, 127],使用缓存的对象,否则new一个新对象

例子

这里写图片描述

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值