五分钟明白包装类(Java)

1.为什么需要包装类

Java提供了两个类型系统,基本数据类型引用数据类型。使用基本数据类型在于效率,然而当使用只针对对象的API或型特性(例如泛型),我们该怎么办呢?例如:

//情况1:方法形参

Object类的equals(Object obj)

//情况2:方法形参

ArrayyList类的add(Object obj)

//没有如下的方法:

add(int number)

add(double d)

add(boolean b)

//情况3:泛型

Set<T>

List<T>

Cllection<T>

Map<K,V>

(其中T表示的是引用数据类型)

 2.有哪些包装类

Java针对八种基本数据类型定义了相应的引用类型:包装类(封装类)。有了类的特点,就可以调用类中的方法,Java才是真正的面向对象。

基本数据类型包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
booleanBoolean
charCharacter

表格前七个数值类型的父类是Number,默认继承于Number。

封装以后的,内存结构对比:

public static void main(String[] args){
     int num=520;
     Integer obj=new Integer(520);
}

 3.包装类的使用

1.为什么要使用包装类?

为了使得基本数据的变量具备引用数据类型变量的相关特性(比如:封装性、继承性、多态性),我们给各个基本数据类型的变量都提供了对应的包装类。

2.(掌握)基本数据类型对应的包装类类型 。(在上面的表格里)

3.掌握基本数据类型与包装类之间的转换。

3.1为什么需要转换

>一方面,在有些场景下,需要使用基本数据类型对应的包装类的对象。此时需要将基本数据类型的变量转换为包装类的对象。比如:ArrayList的add(Object obj);Object类的equals(Object obj)

>对于包装类来讲,既然我们使用的是对象,那么对象是不能进行+、-、 *、 /等运算的。

3.2如何转换

(装箱)基本数据类型--->包装类:

1.使用包装类的构造器

public void test1(){
     int i1=10;
     Integer ii1=new Integer(i1);
    System.out.println(ii1.toString());
}

2.(建议)调用包装类的valueof(xxx xx)

//推荐使用
public void test1(){
     int i2=10;
    Integer ii2=Integer.valueof(i2);
   
}

(拆箱)包装类--->基本数据类型:调用包装类的xxxValue()

public void test2(){
   Integer ii1=new Integer(10);
   int i1=ii1.intValue();
   i1=i1+1;

}

注意:原本使用基本数据变量的位置,改装成包装类以后,对于成员变量来说,其默认值变化了!

4.jdk5.0新特性:自动装箱、自动拆箱

public void test(){
  //自动装箱:  基本数据类型--->包装类
    int i1=10;
    Integer ii1=i1;//自动装箱
   System.out.println(ii1.toString());
   int i2==ii1;//自动拆箱
 
}

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值