概述
java.lang.Integer是一个类,它集成了java.lang.Number,它在某对象中打包了原始类型为int的值。Integer类型的对象包括了int型的单个域。由于java.lang.Integer是一个类,因此它提供了一些方法来对其对象进行操作。
Java 5 引入了自动装箱和自动拆箱的概念。使得开发者不需要注意基本类型如:int long等基本类型和对应的对象类型:Integer Long等之间的转换问题。但是也稍微带来了一点点需要注意的东西。
使用JDK5.0版本以上可以自动拆箱,但是在JDK5.0以下环境编写的一些.java文件,用到JDK5.0以上环境后可能就会出现转换出错。
使用类型强制转换的方法换成这样即可:
Integer转成int可以用:Integer.parseInt();
int转成Integer可以用:new Integer();
举例:
int num = (int)Integer.valueOf(request.getParameter("hiddenNum"));
Integer integerid=new Integer(request.getParameter("stringid"));
建议:Integer integerid=Integer.valueOf(request.getParameter("stringid"));
如果前例中request.getParameter("hiddenNum")取得的值不是数字,那会出现NumberFormatException异常错误!
因为数据不同类型的长度不同,所以请慎用new Integer()、new Long()……
1、慎用 Integer Long Double 等对象请慎用== ,最好转换成基本类型进行对比。
2、尽量少用new Long(x) new Integer(x) 等,尽量使用Integer.valueOf(x) Long.valueOf(x),这样可以避免过多的new对象,稍微提高一点性能。
看看这两个语句
Integer a=new Integer(1)
Integer a=Integer.valueOf(1);
两个都是得到一个Integer对象,但是Integer.valueOf的效率高。为什么呢?因为Integer.valueOf用到了缓存。看看Integer.valueOf的代码:
Java代码
<span style="font-size: small;"> public static Integer valueOf(int i) {
final int offset = 128;
if (i >= -128 && i <= 127) { // must cache
return IntegerCache.cache[i + offset];
}
return new Integer(i);
}</span>
当传入的整数i:-128<i<=127时,从缓存里取出整数对应的Integer对象,否则创建一个Integer对象。基本上平时的程序中,这个范围的整数是最常用的。
Java代码
<span style="font-size: small;"> private static class IntegerCache {
private IntegerCache(){}
static final Integer cache[] = new Integer[-(-128) + 127 + 1];
static {
for(int i = 0; i < cache.length; i++)
cache[i] = new Integer(i - 128);
}
}</span>
可见,IntegerCache预先创建了这些Integer对象。
Java代码
<span style="font-size: small;"> Integer a=new Integer(1);
Integer b=new Integer(1);
//整数范围在-128到127之间,返回的是同一个对象
Integer c=Integer.valueOf(1);
Integer d=Integer.valueOf(1);
//返回的不是同一个对象
Integer e=Integer.valueOf(200);
Integer f=Integer.valueOf(200);
System.out.println(a==b);
System.out.println(c==d);
System.out.println(e==f);</span>
输出为
false
true
false
转载于:https://blog.51cto.com/picker/735884
最后
以上就是优秀手套为你收集整理的解决int和Integer不能互转的全部内容,希望文章能够帮你解决解决int和Integer不能互转所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复