包装类

对基本数据类型进行包装

把基本数据类型变的更强大

把基本数据类型变成包装类叫做装箱操作

jdk1.5新特性,自动装箱,Integer等包装数据类型不用new

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

Integer内部覆盖了tostring

三种赋值方法

Integer num =new Integer(1);
Integer num2 =Integer.valueOf(1);
Integer num3=3;

装箱操作:把一个基本数据类型的值,转换为对应的包装类对象。

拆箱操作:把包装类的对象,转换为对应的基本数据类型的变量

自动装箱:可以直接把一个基本数据类型赋值给包装类对象,其实最终编译成字节码的时候,还是使用valueOf进行装箱(语法糖)

Integer i=Integer.valueOf(20);
Integer i=20;//这俩者等价

自动拆箱:可以直接把一个包装类对象赋值给基本数据类型的变量。本质:编译成字节码的时候。会调用intValue方法

基本数据类型与包装类区别

默认值不一样

包装类当中提供了很多方法直接给我们使用

集合框架当中不能存放基本数据类型,只能存对象

什么时候使用基本数据类型什么时候使用包装类

在类当中,成员变量一般都使用包装类型

在方法中,我们一般都都使用基本数据类型

方法中基本数据类型在栈中,包装类型在堆中

Integer i =new Integer(100);
Integer i2 =new Integer(100);
System.out.println(i==i2)//false,包装类中比较的是地址,每new都会创建新的地址,

Integer i3 =Integer.valueOf(123);
Integer i4 =Integer.valueOf(123)
System.out.println(i==i2)//true 包装类当中的缓存设计,但在-128到127之间才使用给缓存,超过这个范围会直接创建新的地址

结论不要使用==直接比较,对于Object类型使用equals进行比较

抽象方法

在方法前面添加了一个关键字abstract

特点,抽象方法是没有方法体的

抽象方法必须得要定义在抽象类 或接口当中(在类前面添加上了一个abstract就成为了抽象类)

抽象类的子类必须去覆盖抽象的方法

抽象方法在定义的时候不需要要方法体,并且不能是私有private的,不能使用final和static修饰

抽象类一般都当作父类去被继承,可以有非抽象的方法,不能直接创建对象

抽象类继承抽象类可以不覆盖抽象方法

抽象类的构造方法不能定义为私有的(抽象方法必须要让子类继承之后,才能实现内部的方法体,子类继承的话,先去调用父类的构造方法)

抽象类不能使用final来修饰

命名时,都喜欢在类名前面加上Abstract

接口

java接口表示一种规范约束要求实现遵循该规范,用来约束使用者该怎么做

使用抽象方法来去定义一组功能必须要实现者提供方法的实现

interface Jiekou{

}

接口也会生成对应的字节码

接口是一个特殊的抽象类,可以在接口前面和接口的方法前加上或不加abstract等价。编译时字节码中会自动的给方法前面哦加上abstract

注意点

接口没有构造器,不能创建对象,接口当中定义的变量,编译成字节码时会变成全局的静态常量会加上public syayic final

接口当中定义的方法都是公共的抽象的方法

接口当中可以定义内部类,内部类也是public abstract

接口的继承

一类可以继承多个接口,接口之间用用,分割

interface 接口名称 extends 继承的接口名称,继承的接口名称

接口继承的时候一般不回去覆盖父接口的方法

接口默认是public,所以实现接口的访问权限不能小于public,所以只能是public

接口的实现 类名 implements 接口1,接口2{}

接口弥补了类只能单继承的缺点

接口也可以使用多态的写法(多态,编译时看左边,运行时看右边)叫做面向接口编程。

Last modification:April 22, 2022
如果觉得我的文章对你有用,请随意赞赏