Java包装类

2021/10/6 9:11:04

本文主要是介绍Java包装类,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Java包装类

一.什么是包装类

Java中的基本数据类型没有方法和属性,而包装类就是为了让这些拥有方法和属性,实现对象化交互。

 数值型包装类都继承至Number,而字符型和布尔型继承至Object。

包装类继承结构图

二.包装类应用场景

1、集合类泛型只能是包装类;

// 编译报错
List<int> list1 = new ArrayList<>();

// 正常
List<Integer> list2 = new ArrayList<>();

2、成员变量的默认值;

private int status; //基本数据类型 默认为0
private Integer status; //包装类型 默认为null

基本数据类型的成员变量都有默认值,如以上代码 status 默认值为 0,因为代码编写的问题,在赋值过程中 ,没有进行处理null值,就给status赋值了,那样就可能会出现问题,为了避免这样问题出现,只能使用包装类 Integer,它的默认值为 null,所以就不会有默认值影响,也就省掉了去处理null的麻烦了.

3、方法参数允许定义空值;

private static void test1(int status){//不可以传null
    System.out.println(status);
}

private static void test1(Integer status){//可以传null
    System.out.println(status);
}

看以上代码,方法参数定义的是基本数据类型 int,所以必须得传一个数字过来,不能传 null,很多场合我们希望是能传递 null 的,所以这种场合用包装类比较合适。


注意.包装类是对象.所以在使用==比较的是地址 如果需要比较值的话那么使用包装类中的,equals 用法和String中的equals一样,当然也是可以使用Objects.equals()的

所有包装类里的方法基本相同 ,所以下面案例只拿几种来演示

三.自动装箱、拆箱

装箱:基本数据类型转换为包装类;

拆箱:包装类转换为基本数据类型。

 //1.自动装箱
        int t1=1;
        Integer t2=t1;
 //2.手动装箱
        Integer t3=new Integer(t1);
        System.out.println("int类型t1="+t1);
        System.out.println("自动装箱,Integer类型对象t2="+t2);
        System.out.println("手动装箱,Integer类型t3="+t3);


//1.自动拆箱
        int t4=t2;
 //2.手动拆箱
      //通过intValue()方法返回int值,还可以利用其他方法装换为其他类型
        int t5=t2.intValue();
        System.out.println("自动拆箱,int型t4="+t4);
        System.out.println("手动拆箱,int型t5="+t5);

四.基本数据类型,字符串和包装类的转换

通过包装类Integer.toString()–将整型转换为字符串;

通过Integer.parseInt()–将字符串转换为int类型;

通过valueOf()–把字符串转换为包装类然后自动拆箱

//基本数据类型转换为字符串
        int t1=12;
        String t2=Integer.toString(t1);
        System.out.println("int转换为String:"+t2);
//字符串转换为基本数据类型
        //通过paerInt方法  将字符串转为int 
        int t3=Integer.parseInt(t2);
        //通过valeOf,先把字符串转换为包装类然后通过自动拆箱 转换为int
        int t4=Integer.valueOf(t2);
        System.out.println("t3:"+t3);
        System.out.println("t4:"+t4);

五.包装类缓存概念

Java为了提高拆装箱效率,在执行过程中提供了一个缓存区(对象池)【类似于常量数组】如果传入的参数是,-128 ~127 会直接去缓存查找数据,如果有久直接产生,如果没有就隐式调用new方法产生

Integer three=100;
// 这时缓存区没有,就会构造一个
Integer four=100;
//这时缓存区有,就会直接取
 Integer five=200;
//这里为200,超出了缓存区范围,所以就会隐式 new Integer(200) 

六.整形进制转换

IntegerLong

toBinaryString(int i) //转2进制
Integer.toHexString(int i) //转16进制
Integer.toOctalString(int i)//转 8进制  
点赞 -收藏-关注-便于以后复习和收到最新内容
有其他问题在评论区讨论-或者私信我-收到会在第一时间回复
如有侵权,请私信联系我
感谢,配合,希望我的努力对你有帮助^_^



这篇关于Java包装类的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程