Java基础(包装类)

目录

什么是包装类?

128陷阱

自动装箱\拆箱

包装类及自动拆装箱的例子演示


此篇文章需要用到以下内容:

类与对象

数据类型相关介绍

什么是包装类?

包装类的本质是一个类,是基本数据类型和相关方法的封装,包装类中的方法简便了工作,提高了代码的简洁性,丰富了代码功能。

128陷阱

public static void main(String[] args) {
        Integer a1=10;
        Integer a2=10;
        System.out.println(a1==a2);
        
        Integer a3=1000;
        Integer a4=1000;
        System.out.println(a3==a4);
    }

程序输出:

出现上述现象的原因:

Integer类的原理:有一个valueof()方法,计算机将-128~127之间的数值存储到一个catch数组中,该数组相当于一个缓存,亦可理解为操作系统中的页存储的快表。

因为Integer属于类,属于引用类型,所以用此类型存储的变量用==判断比较的是两者的地址。

数据在-128~127之间,会直接返回该值在catch数组中的地址。如此而言,在-128~127之间的相同的数值用==判断的结果为true。

若数据没有在-128~127这个区间,计算机需要重新开辟新的内存空间进行存储,继而用==判断的结果为false。

以上为128陷阱以及原理的解答。

自动装箱\拆箱

自动装箱是将变量自动转化为包装类对象的过程。

Integer b=20;//Integer b=Integer.valueOf(20);
以上为自动装箱的代码分解。

自动拆箱是在值传递的过程中将包装类变量自动转化为相应类的过程。

Integer b=20;
int a =b; //int a = b.intValue();
以上为自动拆箱的代码分解。

包装类及自动拆装箱的例子演示

        int a=10;
        int b=10;
        Integer a1=10;
        Integer b1=10;
        Integer a2=new Integer(10);
        Integer b2=new Integer(10);

        System.out.println(a==b);
        System.out.println(a1==b1);
        System.out.println(a2==b2);
        System.out.println(a1==b);
        System.out.println(a1.equals(a));
        System.out.println(a1==a2);
        System.out.println(a==a2);

程序输出:

程序分析:

 System.out.println(a==b);

输出:true

创建存储类型为int且值都为10的两个变量,此时用==判断是判断两者值是否相同,很明显,两者值相同。

 System.out.println(a1==b1);

输出:true

创建存储类型为integer类型且值都为10的两个变量,是在数组当中找数据,且两者共用一个地址。

System.out.println(a2==b2);

输出:false

new开辟了新的内存空间。

 System.out.println(a1==b);

输出:true

包装类和基本数据类型用==进行判断时会自动拆箱。

 System.out.println(a1.equals(a));

输出:true

包装类和基本数据类型用equals()进行判断时会自动拆箱。

 System.out.println(a1==a2);

输出:false

new开辟了新的内存空间。

System.out.println(a==a2);

输出:true

包装类和基本数据类型用==进行判断时会自动拆箱。

到此,此篇文章结束。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值