1.Instanceof 操作符
- x instanceof A:检验x是否为类A的对象,返回值为boolean型。
- 要求x所属的类与类A必须是子类和父类的关系,否则编译错误。
- 如果x属于类A的子类B,x instanceof A值也为true。
2.Object类
- object类是所有java类的根父类
- 如果在类的声明中未使用extends关键字指明其父类,则默认父类为Object类
3.单例(Singleton)设计模式
- 设计模式就是我们实际编程过程中,逐渐总结出的一些解决问题的套路
- 单例就是只有一个实例,即实例化对象
- 在整个软件系统运行过程中,这个对象只被实例化一次,以后不论在哪都只调用这一个实例
- 适用场景:实例化对象的常见要消耗大量得到时间和资源,即频发的new对象无意义
- 分类:饿汉式单例和懒汉式单例(调用前创建和第一次调用创建的区别)
//饿汉式
public class Single {
// public Single(){
// //假设构造中要执行1000行代码,要占用很大的资源,耗时很长(10秒)
// //每一次new Single对象需要10秒,运行1000行代码
// //像这种情况,就适合使用单例模式,只new一次对象,以后一直就使用这个对象
// }
//私有的构造,构造方法私有化,调用这个类的人就不能直接使用new来创建对象
private Single(){
}
//私有的Single类型的类变量
private static Single single = new Single();
public static Single getInstance(){
return single;
}
}
//懒汉式
public class Single1 {
//先私有化构造方法,让外边不能直接new对象
private Single1(){
}
private static Single1 s1 = null;
public static Single1 getInstance(){
if(s1 == null){
s1 = new Single1();
}
return s1;
}
}
4.初始化代码块
- 初始化代码块的静态代码块执行早于非静态代码块
- 静态代码块多次调用只执行一次,非静态代码块多次调用多次执行
- 静态代码块修饰符static,即static{ 代码块 },常用于复杂对象的初始化
- 在匿名内部类中,用非静态代码块代替构造方法进行初始化属性
5.final关键字
- final标记的类不能被继承,标记的方法不能被子类重写,标记的变量为常量
6.抽象类(abstract class)
- 抽象类的关键字是abstract,修饰类时为抽象类,修饰方法时为抽象方法
- 抽象类不能被实例化,抽象方法中只有方法的声明,没有方法的实现
- 不能用abstract修饰属性、私有方法、构造器、静态方法、final的方法
7.接口(Interface)
- 一个类可以实现多个接口,接口也可以继承其它接口
- 接口中的所有成员变量都默认是由public static final修饰的。
- 接口中的所有方法都默认是由public abstract修饰的。
- 接口没有构造器。
- 接口采用多层继承机制。
- 接口是对方法的抽象,即一系列的动作的抽象;抽象类是对一类事物的高度抽象,其中既有属性也有方法
8.内部类
- 内部类的出现是为了解决不能多重继承问题,使用内部类可以变相实现多重继承