Integer.parseInt("") Integer.valueOf("")和new Integer("")之间的区别

简介: 把一个String转换成int有Integer.parseInt("")、 Integer.valueOf("")和new Integer("")这么几种方式,它们之间有什么区别呢?我们可以分别看一下它们的源码//Integer.parseInt("")public static int parseInt(String s) throws NumberFormatExc

把一个String转换成int有Integer.parseInt("")Integer.valueOf("")new Integer("")这么几种方式,它们之间有什么区别呢?我们可以分别看一下它们的源码

//Integer.parseInt("")
public static int parseInt(String s) throws NumberFormatException {
  return parseInt(s,10);
}
//Integer.valueOf("")
public static Integer valueOf(String s) throws NumberFormatException {
  return Integer.valueOf(parseInt(s, 10));
}
//new Integer("")
public Integer(String s) throws NumberFormatException {
  this.value = parseInt(s, 10);
}

从源码中可以看出,Integer.valueOf("")Integer.parseInt("")内部实现是一样的,它们之间唯一的区别就是Integer.valueOf(“”)返回的是一个Integer对象,而Integer.parseInt(“”)返回的是一个基本类型的int

我们再看Integer.valueOf("")new Integer(""),它们同样返回的是一个Integer对象,但它们又有什么区别呢?我们再进入Integer.valueOf(parseInt(s, 10) )方法内部:

public static Integer valueOf(int i) {
  if (i >= IntegerCache.low && i <= IntegerCache.high)
  return IntegerCache.cache[i + (-IntegerCache.low)];
  return new Integer(i);
}

我们可以看到,Integer.valueOf("")会用到IntegerCache对象,当IntegerCache中存在时就从cache中取,不存在时才会调用new Integer(i)构造函数返回一个Integer对象。所以Integer.valueOf("")会用到cache,其效率可能会比用构造函数new Integer(i)

关于IntegerCache,在-127~128之间的值都会被cache,所以当我们要的值位于这个区间时返回的都是同一个实例,例如:

System.out.println(Integer.valueOf(5) == Integer.valueOf(5));
System.out.println(Integer.valueOf(500) == Integer.valueOf(500));

上面程序的运行结果是:

    false //会用到缓存
    true  //不会用到缓存

综上所述:

  • 当我们需要的是一个基本类型* int *的时候我们需要使用Integer.parseInt()函数
  • 当我们需要的是一个Integer对象类的时候我们就是用Integer.valueOf()函数
目录
相关文章
|
定位技术
百度地图拾取经纬度转为标准GEOJSON格式的函数解决方案
百度地图拾取经纬度转为标准GEOJSON格式的函数解决方案
456 0
|
弹性计算 运维 算法
阿里云服务器通用算力型u1与经济型e实例性能及使用常见问题FAQ
通用算力型u1与经济型e实例是阿里云推出的新品云服务器实例,也是目前阿里云价格最便宜的云服务器实例,目前新老用户购买经济型e实例最低价格仅需182.04元1年,购买通用算力型u1实例云服务器最低价格仅需840.96元1年,本文为大家汇总了通用算力型u1与经济型e实例性能及使用常见问题FAQ。
1039 0
阿里云服务器通用算力型u1与经济型e实例性能及使用常见问题FAQ
|
3月前
|
人工智能 自然语言处理 API
蚂蚁开放平台概述
百宝箱开放平台是面向开发者的一站式智能体开发平台,支持API与SDK集成,提供智能体调用、模型效果盲测、WebSDK嵌入等功能,助力快速实现智能对话、内容生成与网页交互,现处于试用阶段,享每月10亿免费token。
229 0
|
安全 网络安全 数据安全/隐私保护
网络安全漏洞、加密技术与安全意识:保护你的数字身份
在数字化时代,网络安全和信息安全变得至关重要。本文将探讨网络安全漏洞、加密技术和安全意识的重要性,并提供一些实用的建议和技巧,帮助你保护自己的数字身份。无论你是个人用户还是企业,了解这些概念并采取适当的措施都是至关重要的。
|
JSON 数据处理 数据格式
Python中JSON结构数据的高效增删改操作
Python中JSON结构数据的高效增删改操作
249 0
|
存储 Windows
GitHub+PicGo+Typora搭建个人免费图床并实现md粘贴即上传
本文介绍基于Github平台与PicGo工具,构建免费、稳定的图床,并实现在Typora内撰写Markdown文档时,粘贴图片就可以将这一图片自动上传到搭建好的图床中的方法~
1386 3
GitHub+PicGo+Typora搭建个人免费图床并实现md粘贴即上传
|
数据采集 搜索推荐 安全
谷歌新网站多久能有排名?
答案是:谷歌新网站最快7天就能有排名。 新网站的“沙盒”现象 谷歌在对新网站进行排名时,通常会存在一个所谓的“沙盒”阶段,这是一段时间内,新网站似乎在搜索结果中被“固定”或“受限”。 沙盒现象的定义 “沙盒”现象是指新网站在初次发布后的一段时间内,尽管进行了有效的Google优化,但在搜索结果中的排名仍然不如预期。
524 0
谷歌新网站多久能有排名?
|
人工智能 自然语言处理 达摩院
ModelScope 垂类检测系列模型介绍
ModelScope 垂类检测系列模型介绍,该系列模型基于面向工业落地的高性能检测框架DAMOYOLO,其精度和速度超越当前经典的YOLO系列方法。
730 0
ModelScope 垂类检测系列模型介绍
|
网络协议 数据库 网络架构
BGP路由技术(一)
⭐本文介绍⭐ BGP(Border Gateway Protocol,边界网关协议)是一个路径矢量路由协议,和传统的基于下一跳的IGP协议不同,它是基于AS(自治系统)的协议。BGP属于外部网关路由协议,它解决的是AS之间的选路问题,也正因为这样,它更适合与互联网。学习BGP的关键在于理解BGP的报文,邻居建立,BGP路由属性,选路原则等。本文将对以上各项知识、工作原理及相关的配置做介绍。
BGP路由技术(一)
|
SQL Dubbo 关系型数据库
手把手教你分析解决MySQL死锁问题
手把手教你分析解决MySQL死锁问题 在生产环境中如果出现MySQL死锁问题该如何排查和解决呢,本文将模拟真实死锁场景进行排查,最后总结下实际开发中如何尽量避免死锁发生。
1057 0
手把手教你分析解决MySQL死锁问题