Integer.parseInt("") Integer.valueOf("")和new Integer("")之间的区别
来源:互联网 发布:车辆维修记录软件 编辑:程序博客网 时间:2024/05/18 02:28
把一个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()
函数
阅读全文
0 0
- Integer.parseInt("") Integer.valueOf("")和new Integer("")之间的区别
- Integer.parseInt("") Integer.valueOf("")和new Integer("")之间的区别
- Integer.parseInt("") Integer.valueOf("")和new Integer("")之间的区别
- Integer.valueOf和Integer.parseInt及new Integer()的区别
- Integer.valueOf()和Integer.ParseInt()的区别
- Integer.parseInt()和Integer.valueOf()的区别
- Integer.valueOf和Integer.parseInt的区别
- Integer.parseInt()和Integer.valueOf()的区别
- Integer.parseInt()和Integer.valueOf()的区别
- integer.valueof()和integer.parseint区别
- Integer.valueOf()和Integer.parseInt()区别
- 【转】Integer.valueof ,Integer.parseInt的区别
- parseInt 和 Integer.valueof 的区别
- Integer.parseInt() 和valueOf 的区别
- 【Java】Integer.parseInt() & Integer.valueOf() & new Integer()
- Integer.ValueOf().intValue和Integer.parseInt的区别
- Integer.parseInt()和Integer.valueOf()的详解
- Integer.getInteger和Integer.valueOf、Integer.parseInt()的比较
- 问题 W: 锤子剪刀布
- POJ1419:Graph Coloring(图的最大独立集)
- 认真学习php面向对象-3
- 【Java学习笔记】26:打印流&数据流
- ViewPager加载不出View的解决方法
- Integer.parseInt("") Integer.valueOf("")和new Integer("")之间的区别
- 6 Major Differences between English and Chinese
- MathType和Office 2016兼容设置
- 文件选择器JFileChooser
- * 24种设计模式——桥梁模式
- 在centos中使用yum安装mongodb
- 简单商品管理
- 问题 X: 个位数统计
- Arduino 控制 DS1302 时钟芯片