包装类之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