包装类
原始类型: boolean,char,byte,short,int,long,float,double
包装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double
包装类创建的是对象,拥有方法和字段,对象的调用都是通过引用对象的地址,基本类型不是,还有就是包装类是引用传递,基本类型是值传递;
处理对象
1.打印对象和oStringt方法,当你创建一个对象然后直接用sout打印对象时;
运行结果:
可以看出,直接输出对象名实际上就是输出对象toString方法的返回值;
toString方法是Object类里面的一个实例方法,所有的Java类都是Object类的子类,因此所有的Java对象都有toString方法,它是一个”自我描述“的方法,该方法通常会用来实现一个功能:当程序员直接打印该对象时,系统将会输出该对象的自我描述信息,用来告诉外界该对象具有的状态信息;
2.==和equals方法
- ==运算符:如果判断的是两个基本类型变量,且都是数值类型,那么只要这两个变量的值相等就返回true,不相等就返回false;如果判断的是引用变量,那么只有当两个变量指向同一个对象是才会返回true,不然返回false
- equals方法: equals方法是Object的一个实例方法,并且我们可以通过重写来改变equals判同的条件;
抽象类:
抽象方法和抽象类:
- 抽象方法和抽象类必须使用abstract修饰符来修饰,抽象方法也是:,抽象方法不能有方法体;
- 抽象类不能被实例化,无法使用new关键字来调用抽象类的构造器类创建抽象类的实例。即使抽象类里面不含抽象方法,这个抽象类也不能创建实例;
- 抽象类可以包含成员变量,方法,构造器,初始化块,内部类(接口,枚举)5种成分,抽象类的构造器不能用于创建实例,主要是用于被子类调用;
- 含有抽象方法的类,只能被定义为抽象类;
接口:
和类定义不同,接口不是使用class关键字,而是使用interface关键字,接口定义格式如下:
[修饰符] interface 接口名 extends 父接口1,父接口2......
{
零个到多个常量定义......
零个到多个抽象方法定义......
零个到多个内部类,接口,枚举定义......
零个到多个私有方法,默认方法或类方法定义......
}
接口中成员的特点 :
- 成员变量只能是常量,并且默认public static final修饰;
- 接口中没有构造器;
- 成员方法只能是抽象方法,默认修饰符public static;
- JDK7以前:接口只能定义抽象方法;
- JDK8的新特性:接口中可以定义有方法体的方法;
- JDK9的新特性:接口中可以定义私有方法;
接口和类的区别:
- 类和类的关系:继承关系,不能多继承,但是可以多层继承;
- 类和接口的关系:实现关系,可以但实现,也可以多实现,还可以在继承一个类的同时实现多个接口;
- 接口和接口的关系:继承关系,可以单项继承,也可以多项继承;
JDK8以后接口中新增的方法:
- 允许在接口中定义默认方法,需要使用关键字default修饰;
作用:解决接口升级的问题
接口中默认方法的定义格式:
- 格式:public default 返回值类型 方法名(参数列表){ }
- 范例: public default void show(){ }
接口中默认方法的注意事项:
- 默认方法不是抽象方法,所以不强制重写,但是如果被重写,重写的时候去掉default关键字
- public可以省略,但是default不能省略;
- 如果实现了多个接口,多个接口中存在相同名字的默认方法,子类就必须对该方法进行重写;