一 、java的多态

1> 方法重载:方法重载是方法中存在同名方法,方法的参数不同,完成的功能不同。
2> 对象多态:子类对象和父类对象可以相互转换,根据其使用的子类的不同完成的功能也不同。

二、引用数据类型中,只要使用了未实例化的对象肯定会出现空指针异常NullPointerException,

三、Null调用方法会发生空指针异常,NullPointerException

四、匿名对象—— 一般只使用一次,就会被垃圾收集机制回收匿名对象只在堆内存中开辟空间,栈中无引用。

匿名对象基本都是作为其他实例对象的参数使用

例如:new Person().methode() Person的匿名对象调用method方法

五、一个字符串就是一个匿名对象,因为他可以调用equals()方法

六、一个字符串已经被一个名称引用,以后再有相同的字符串被别的名称引用时,不会开辟新的堆内存空间。会放入对象池中可以重复使用。

例如:String str1 = “hello”; String str2 = “hello”; str1 和 str2 指向同一堆内存空间,栈中存放的内存地址一样,str1 == str2 的结果为 true

七、String str = newString(“hello”)这中string的实例化对象会产生两个堆空间,内容都为 hello,不会放入对象池,可以用 intern()方法手工入池。

八、String对象的内容不会改变,改变的只是指向的堆内存的地址

九、非static方法可以调用static的属性和方法,但是static的方法不能调用非static的属性和方法

十、构造代码块在类中,构造块优于构造方法执行,每次实例化对象都会执行构造块,会执行多次。

十一、静态代码块优于主方法执行,类中的静态代码块优于构造快执行,不管实例化多少对象,静态代码块只执行一次。

十二、static声明的内部类直接变成外部类,但是static内部类不能访问非static的外部类属性

十三、方法中的内部类不能直接访问方法的参数,如果想访问方法中的参数,需要在参数前加上final。

十四、子类不能访问父类中的私有方法和属性,子类的实例化对象,必须先调用父类的构造方法再调用子类自己的构造方法,子类覆写的方法不能比父类方法拥有更严格的访问权限

image.png

十五、final声明 的类不能有子类,final声明的方法不能被子类所覆写,final声明的变量为常量

十六、包含一个抽象方法的类必须是抽象类。抽象类和抽象方法必须由abstract声明。抽象方法只需要声明不需要实现。抽象类必须被子类继承,子类需实现抽象类的全部抽象方法。

十七、java多态

向上转型:子类对象—》父类对象 ,向上转型,程序会自动完成。 如:父类 父类对象 = 子类实例
向下转型:父类对象—》子类对象 ,如:子类 子类对象 = (子类)父类实例

十八、类加载器的工作机制

类装载工作由ClassLoader及其子类负责
1、装载:查找和导入class文件
2、链接:执行校验、准备和解析步骤,解析步骤可选择
。校验:检查载入class文件数据的正确性
。准备:给类的静态变量分配存储空间
。解析:将符号引用转换为直接引用
3、初始化:对类的静态变量、静态代码块执行初始化工作

十九、lambda———方法引用

1、对象::实例方法
2、类::静态方法
3、类::实例方法