Integer.parseInt("") Integer.valueOf("")和new Integer("")之间的区别
2018-03-08 10:07
489 查看
把一个String转换成int有
2
3
4
5
6
7
8
9
10
11
12
13
从源码中可以看出,
2
3
4
5
6
我们可以看到,
2
3
上面程序的运行结果是:
2
3
综上所述:当我们需要的是一个基本类型* int *的时候我们需要使用
当我们需要的是一个Integer对象类的时候我们就是用
转载来自:http://blog.csdn.net/suifeng3051/article/details/52101411
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); }1
2
3
4
5
6
7
8
9
10
11
12
13
从源码中可以看出,
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); }1
2
3
4
5
6
我们可以看到,
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));1
2
3
上面程序的运行结果是:
false //会用到缓存 true //不会用到缓存1
2
3
综上所述:当我们需要的是一个基本类型* int *的时候我们需要使用
Integer.parseInt()函数
当我们需要的是一个Integer对象类的时候我们就是用
Integer.valueOf()函数
转载来自:http://blog.csdn.net/suifeng3051/article/details/52101411
相关文章推荐
- Integer.parseInt("") Integer.valueOf("")和new Integer("")之间的区别
- Integer.parseInt("") Integer.valueOf("")和new Integer("")之间的区别
- Integer.parseInt("") Integer.valueOf("")和new Integer("")之间的区别
- Integer.parseInt()和Integer.valueOf()有什么区别
- new Integer(1)和Integer.valueOf(1)的区别
- Integer.parseInt()和Integer.valueOf()有什么区别
- -----String s = new String("xyz");创建了几个String Object? 二者之间有什么区别?
- 【Java】Integer.parseInt() & Integer.valueOf() & new Integer()
- Integer.parseInt()和Integer.valueOf()有什么区别
- Integer.parseInt(s)与Integer.valueOf(s)的区别详解
- Integer.valueOf()和Integer.ParseInt()的区别
- Integer.valueOf()和Integer.parseInt()区别
- Integer.valueOf(String s)与Integer.parseInt(String s)区别
- Integer.parseInt(String s) 和 Integer.valueOf(String s) 的区别
- java中Integer.parseInt(String)与Integer.valueOf(String)区别
- javaSE----Integer.parseInt()与Integer.valueOf()的区别
- String str = null、String str = ""、String str = new String()中所声明对象str之间的区别:
- Integer.parseInt()和Integer.valueOf()的区别
- Java Integer.parseInt(String);Integer.valueOf(String).intValue(); 两种方式的区别
- Integer.parseInt(String s) 与Integer.valueOf(String s)区别