包装类之Integer案例学习

引入

首先标题我写了学习Integer作为案例,是因为了解了一个包装类,其他便能深入浅出的学习到了~

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[]
以后学习的装数据的—》集合,有一个特点,只能装引用数据类型的数据

Integer包装类

1.直接使用无需导包

在这里插入图片描述

2.类的继承关系:

在这里插入图片描述

3.实现接口:

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

6.属性

//属性:
        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);
运行结果:
2147483647
-2147483648
-2147483648
2147483647

7.构造器(发现没有空参构造器)

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

Integer i1 = new Integer(12);

在这里插入图片描述
(2)String类型作为构造器的参数:

Integer i2 = new Integer("12");
Integer i3 = new Integer("abcdef");

在这里插入图片描述

8.包装类特有的机制:自动装箱 自动拆箱

//自动装箱:int--->Integer
    Integer i = 12;
    System.out.println(i);
    //自动拆箱:Integer--->int
    Integer i2 = new Integer(12);
    int num = i2;
    System.out.println(num)

(1)自动装箱 自动拆箱 是从JDK1.5以后新出的特性
(2)自动装箱 自动拆箱 :将基本数据类型和包装类进行快速的类型转换。

验证:
在这里插入图片描述
可以自定打断点测试是否走入valueOf方法中:
在这里插入图片描述

9.常用方法:

valueOf方法的底层:
在这里插入图片描述

代码:

public class Test04 {
    
    
    //这是一个main方法,是程序的入口:
    public static void main(String[] args) {
    
    
        //compareTo:只返回三个值:要么是0,-1,1
        Integer i1 = new Integer(6);
        Integer i2 = new Integer(12);
        System.out.println(i1.compareTo(i2));// return (x < y) ? -1 : ((x == y) ? 0 : 1);
        //equals:Integer对Object中的equals方法进行了重写,比较的是底层封装的那个value的值。
        //Integer对象是通过new关键字创建的对象:
        Integer i3 = new Integer(12);
        Integer i4 = new Integer(12);
        System.out.println(i3 == i4);//false 因为==比较的是两个对象的地址
        boolean flag = i3.equals(i4);
        System.out.println(flag);
        //Integer对象通过自动装箱来完成:
        Integer i5 = 130;
        Integer i6 = 130;
        System.out.println(i5.equals(i6));//true
        System.out.println(i5 == i6);
        /*
        如果自动装箱值在-128~127之间,那么比较的就是具体的数值
        否在,比较的就是对象的地址
         */
        //intValue() :作用将Integer--->int
        Integer i7 = 130;
        int i = i7.intValue();
        System.out.println(i);
        //parseInt(String s) :String--->int:
        int i8 = Integer.parseInt("12");
        System.out.println(i8);
        //toString:Integer--->String
        Integer i10 = 130;
        System.out.println(i10.toString());
    }
}
运行结果:
-1
false
true
true
false
130
12
130

猜你喜欢

转载自blog.csdn.net/chwensrong/article/details/119870947
今日推荐