一、包装基础和用途
1、基本类型转化为Integer对象
Integer a=new Integer(3); //Integer会被划横线 Integer b=Integer.valueOf(30); //官方推荐这样写
2、把包装类对象转成基本数据对象
int c=b.intValue(); double d = b.doublevalue();
3、把字符串转成包装类对象
Integer e = new Integer("33"); //如何后面跟字符,则转化不了int System.out.println(e.TYPE); //int Integer f = Integer.parseInt("99988");
4、把包装类对象转成字符串
String str = f.toString();
5、常见的常量
System.out.println("int类型最大的整数:"+Integer.MAX_VALUE); //查看int最大数
二、自动装箱和拆箱
1、自动装箱
Integer a = 234; //自动装箱 Integer a1 = Integer.valueOf(a); //实际上编译器自动编译为
2、自动拆箱
int b = 234; //自动拆箱,编译器编译以下 Integer b1 = b.intValue(); //编译器自动编译内容
3、包装类空指针异常问题
Integer c = null; //Integer c1 = c.intValue(); 不能以空内容来拆箱,报空指针异常
编译合法的原因:
null表示i没有指向任何对象的实体,但作为对象名称是合法的(不管这个对象名称存是否指向了某个对象的实体)。由于实际上i并没有指向任何对象的实体,所以也就不可能 *** 作intValue()方法,这样上面的写法在运行时就会出现NullPointerException错误。
解决null方法:
Integer c = null; if(c!=null) { int c1 = c; }
三、包装类的缓存
1、包装类在自动装箱时为了提高效率,对于-128~127之间的值会进行缓存处理。
Integer d1 = -124; Integer d2 = Integer.valueOf(-124); System.out.println(d1==d2); //-124是在数组的缓存范围内,为true System.out.println(d1.equals(d2)); //这里也为true
2、不在128~127之间的值,比较只能用equals,不能用==
Integer f1 = -1234; Integer f2 = Integer.valueOf(-1234); //-1234超出了数组缓存范围,地址为false System.out.println(f1==f2); //false System.out.println(f1.equals(f2)); //true
四、注意
- JDK1.5以后,增加了自动装箱与拆箱功能
- 自动装箱调用的是valueOf()方法,而不是new Integer()方法
- 自动拆箱调用的xxxValue()方法
- 包装类在自动装箱时为了提高效率,对于-128~127之间的值会进行缓存处理。超过范围后,对象之间不能再使用==进行数值的比较,而是使用equals方法
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)