new Integer 、Integer.parseInt() 和 Integer.valueOf()
2018-01-09 13:30
225 查看
Integer类有一个静态缓存,存储了256个特殊的
Integer对象——每个对象分别对应`-128 和127之间的一个值。
有了这个概念,就可以知道上面三行代码之间的区别。
new Integer(123);
显示创建了一个新的
Integer对象。
Integer.parseInt("123");
解析完字符串后返回一个
int值。
Integer.valueOf("123");
这种情况比其他的要更复杂一些。首先进行了字符串解析,然后如果解析的值位于
-128和
127之间,就会从静态缓存中返回对象。如果超出了这个范围,就会调用
Integer()方法并将解析的值作为参数传入,得到一个新的对象。
现在,让我们看一下问题中的3个表达式。
Integer.valueOf("127")==Integer.valueOf("127");
上面的表达式返回
true,因为
Integer的值从静态缓存中取了2次,表达式返回了对象与自己比较的结果。因为只有一个Integer对象,所以返回结果为
true。
Integer.valueOf("128")==Integer.valueOf("128");
上面的表达式返回
false,因为
128没有存在静态缓冲区。所以每次在判断相等时等式两边都会创建新的
Integer对象。由于两个
Integer对象不同,所以
==只有等式两边代表同一个对象时才会返回
true。因此,上面的等式返回
false。
Integer.parseInt("128")==Integer.valueOf("128");
上面的表达式比较的是左边的原始
int值
128与右边新创建的
Integer对象。但是因为
int和
Integer之间比较是没有意义的,所以Java在进行比较前会将Integer自动拆箱,所以最后进行的是
int和
int值之间的比较。由于
128和自己相等,所以返回
true。
补充说明:
只适应于jdk7或以上版本,因为jdk6与jdk7的Integer具体实现有差别,详情可查看下源代码.
http://www.importnew.com/9162.html
相关文章推荐
- Integer.parseInt("") Integer.valueOf("")和new Integer("")之间的区别
- Integer.parseInt()和这个Integer.valueOf()的详解
- Integer.parseInt("") Integer.valueOf("")和new Integer("")之间的区别
- Integer.parseInt()和Integer.valueOf()有什么区别
- Integer.parseInt()和Integer.valueOf()有什么区别
- Integer.valueOf(String) 与 Integer.parseInt(String)
- Integer与int的区别 Integer.Valueof(String s)与Integer.parseInt(String s)的区别
- Integer.parseInt("") Integer.valueOf("")和new Integer("")之间的区别
- Integer.parseInt(String s) 与Integer.valueOf(String s)区别
- JAVA中Integer.parseInt()与Integer.valueOf()
- javaSE----Integer.parseInt()与Integer.valueOf()的区别
- Integer.parseInt(String s) 和 Integer.valueOf(String s) 的区别
- java中Integer.parseInt(String)与Integer.valueOf(String)区别
- Java Integer.parseInt(String);Integer.valueOf(String).intValue(); 两种方式的区别
- Integer.parseInt(String)与Integer.valueOf(String)的区别
- Integer.valueOf(String s)与Integer.parseInt(String s)区别
- Integer.ValueOf().intValue和Integer.parseInt的区别
- javaSE----Integer.parseInt()与Integer.valueOf()的区别
- Integer.parseInt()和Integer.valueOf()的区别
- JAVA中Integer.valueof() Integer.parseInt()区别