1.this和super的区别
this:
①.用于区分成员变量和局部变量二义性,this就是一个对象,this所在方法被哪个对象调用,this就是指哪个对象
②.this用于同一个类里面的构造方法之间的相互调用(只能写在构造方法的第一句,而且构造方法的先相互调用,必须要有出口)
super:
①.代表父类对象,在子类的方法里面调用父类的成员(方法、属性)
②.在子类构造方法里面调用父类的构造方法(无论是否显示书写super()都在调用父类的构造方法,super()调用父类的构造方法,必须写在子类构造方法的第一句)
2.Overload和Override的区别
Overload:方法重载,在同一个类里面,方法名一致,形参列表(个数,类型,数据)不同
Override:方法重写,父类方法不能满足子类需求,子类就重写父类的方法
①子类的方法签名必须和父类一致
②子类方法的修饰符权限大于等于父类方法的修饰符权限,返回值类型必须和父类返回值类型一致或者是其子类
③子类对象调用方法优先调用自己的方法,没有再去找父类
3.==和equals
==:比较两个对象地址值是否相等
equals:默认底层还是去比较两个对象地址值是否相等,覆写equals方法,完成对象里面数据的比较
4.抽象类和接口的区别
①两者都不能被实例化,但是抽象类有构造器,接口没有构造器
②接口中定义方法只能是抽象方法,抽象类中可以有抽象方法,也可以没有
③类只能单继承(只能继承一个类),但是接口可以实现多继承(接口继承多个接口)
④一个类可以实现多个接口,但只能继承一个类(单继承多实现)
5.String、StringBuffer、StringBuilder的区别
String和StringBuffer和StringBuilder都可以用来声明字符串
String是固定不变字符串,而StringBuffer和StringBuilder是可变字符串
StringBuffer是线程安全的,而StringBuilder是线程不安全的,但是StringBuffer的性能低于StirngBuilder
StringBuffer、StringBuilder拼接字符串使用的是方法apppend(),效率比String高很多
6.final、finally、finalize
final:是一个修饰符(类、方法、变量) 不能被继承、重写
finally:配合cry-catch使用,无论是否报错都要执行finally的内容
finalize:是Object中定义的一个方法,每个对象都有这个方法,当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此
7.线程中调用run方法和start方法的区别
run()方法:仅仅只是简单的方法的调用不会开启新线程
start()方法:开启一个新的线程,当线程分配到CPU资源的时候,jvm底层调用run()方法执行逻辑