JAVA包装类

一、包装基础和用途

 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

四、注意

  1.  JDK1.5以后,增加了自动装箱与拆箱功能
  2. 自动装箱调用的是valueOf()方法,而不是new Integer()方法
  3. 自动拆箱调用的xxxValue()方法
  4. 包装类在自动装箱时为了提高效率,对于-128~127之间的值会进行缓存处理。超过范围后,对象之间不能再使用==进行数值的比较,而是使用equals方法
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值