包装类及一些常用类介绍

1、什么是包装类?

以前定义变量,经常使用基本数据类型。

对于基本数据类型来说,它就是一个数,加点属性,加点方法,加点构造器,将基本数据类型对应进行了一个封装,产生了一个新的类,称之为包装类。

如:

int,byte 等 ——  基本数据类型

    包装类      ——  引用数据类型    

2、对应关系

基本数据类型          对应的包装类                继承关系

byte                             Byte                      ---》Number---》Object

short                           Short                     ---》Number---》Object

int                              Integer                 ---》Number---》Object

long                            Long                      ---》Number---》Object

float                             Float                       ---》Number---》Object

double                       Double                    ---》Number---》Object

char                          Character                      Object

boolean                      Boolean                       Object

3、已经有基本数据类型了,为什么要封装为包装类?

(1)java语言 面向对象的语言,最擅长的操作各种各样的类。

(2)以前学习装数据的 —— 数组,int[] 、 String[] 、 double[]   、Student[];

         以后学习装数据的 —— 集合,有一个特点,只能装引用数据类型的数据。

4、是不是有了包装类以后就不用基本数据类型了?

不是。

5、引入 —— 以Integer为例

【1】直接使用,无需导包

 

 【2】类的继承关系:

 【3】实现接口:

 【4】这个类被final修饰,那么这个类不能有子类,不能被继承: 

【5】包装类是对基本数据类型的封装: 对int类型封装产生了Integer

 

 【6】类的历史:

        从JDK1.0版本开始。

 【7】属性:

MAX_VALUE、MIN_VALUE ....

【8】构造器(发现没有空参构造器)

(1)int类型作为构造器的参数;

 

(2)String类型作为构造器的参数。

【9】包装类特有的机制:自动装箱  自动拆箱

(1)自动装箱  自动拆箱 是从JDK1.5以后新出的特性;

(2)自动装箱  自动拆箱 :将基本数据类型和包装类进行快速的类型转换

(底层也是通过方法(valueOf()方法、intValue()方法)实现的)

可以自定打断点测试是否走入valueOf方法中:

【10】Integer 代码示例:

package test1_Integer;

public class Test1 {
    public static void main(String[] args) {
        //属性
        System.out.println(Integer.MAX_VALUE);
        System.out.println(Integer.MIN_VALUE);
        //“物极必反”原理
        System.out.println(Integer.MAX_VALUE +1);
        System.out.println(Integer.MIN_VALUE -1);

        //构造器
        //参数为int类型
        Integer i1 = new Integer(12);
        //Integer类没有空参构造器
        //System.out.println(i1);//同下
        System.out.println(i1.toString());
        //结果为12

        //参数为String类型的
        Integer i2 = new Integer(12);
        //abc转换不了int类型,所以会报错
        //Integer i3 = new Integer("abc");
        System.out.println(i2);
        //System.out.println(i3);
    }
}

6、常用方法

valueOf方法的底层:

 

 代码示例:

package test2_Method;

public class Test {
    public static void main(String[] args) {
        //1、compareTo:
        Integer i1 = new Integer(7);
        Integer i2 = new Integer(12);

        System.out.println(i1.compareTo(i2));
        //底层逻辑“
        //(x < y) ? -1 : ((x == y) ? 0 : 1)
        /*即只返回3个值:
        x < y —— -1
        x = y —— 0
        x > y —— 1
        */

        //2、equals:
        //Integer对Object中的equals方法进行了重写,
        // 比较的是从底层封装的那个value的值。

        // Integer对象是通过new关键字创建的对象
        Integer i3 = new Integer(12);
        Integer i4 = new Integer(12);

        //因为 == 比较的是两个对象的地址,所以肯定不相等
        System.out.println("new关键字创建的对象,进行==比较,必然是:"+ (i3 == i4));//false
        boolean flag = i3.equals(i4);//equals()方法重写了
        System.out.println(flag);

        //Integer对象通过自动装箱来完成(创建)
        Integer i5 = 10;
        Integer i6 = 10;
        System.out.println(i5.equals(i6));//true
        System.out.println("自动装箱创建的对象,进行==比较:"+(i5 == i6));
        //这里,将i5、i6的值都改变为130后,进行比较就变成false了。(???)
        //原因很复杂:看调用的valueOf方法的底层
        //结论,记:
        /*
         如果自动装箱值在-128~127之间,那么比较的就是具体的数值,
         否则,比较的就是对象的地址(地址肯定不一样的)。
        */

        //3、intValue()   —— 以int类型返回该Integer的值
                          //即:将Integer —> int
        Integer i7 = 130;
        int i = i7.intValue();
        System.out.println(i);

        //4、parseInt(String s): String —> int
        int i8 = Integer.parseInt("6666");
        //int i8 = Integer.parseInt("a");//不能是字母,必须是数字
        System.out.println(i8);

        //5、toString(int i) : Integer —> String
        //返回一个 String指定整数的 String对象
        Integer i9 = 777;
        System.out.println(i9.toString());
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值