1、final关键字
可以修饰变量、方法和类
修饰变量,表示变量的值不可以被修改,即常量。
修饰方法,表示方法不可以被重写。
修饰类,表示类不可以被继承。
2、static关键字
静态变量、静态方法、静态代码块
static表明一个成员变量或者方法,可以在没有所属类的实例的情况下被访问。
静态方法不能使用this、super关键字。
3、String、StringBuffer、StringBuilder
String,存放长度不可变的字符串,每次对String类型改变的时候,相当于创建了一个新的对象,将指针指向新的对象
StringBuffer,长度可变字符串,线程安全
StringBuilder,长度可变字符串,线程不安全
速度:StringBuilder>StringBuffer>String
4、方法的重载与重写
(1)重载,在一个类中,有相同的方法名,参数类型或个数不同。
重载的方法,返回值类型,可能相同,可能不同。
(2)重写,子类与父类之间,方法名、参数类型、返回值类型完全一致。
5、抽象类和接口的区别
在jdk1.7及之前
抽象类,可有抽象方法,非抽象方法,类只能继承自一个抽象类,java单继承特性。
接口,只有抽象方法,类可以实现多个接口。
在jdk1.8中
接口可以有静态方法和默认方法,也就是说接口有了实现方法。
默认方法可以在子类中重写,也可以不重写。
6、==和equals的区别
==比较两个内存地址和内容是否相等
equals比较两个内容是否相等。
7、创建线程的方法
(1)继承thread类
(2)实现runnable接口。
这两种方式都需要重写run方法。
8、实现同步的方式
(1)使用synchronized关键字,修饰方法和代码块
(2)使用wait,wait(),notify()方法
9、volatile关键字
为线程同步提供免锁机制
如果一个变量声明为volatile,那么编译器和虚拟机就知道该变量可能被另一个线程并发更新,因此每次使用该变量时,都会重新获取其值,从而实现同步。
10、什么是线程安全?
如果一个线程中有多个线程,这些线程可能会同时执行一段代码,如果每次运行结果与单线程运行时结果是一样的,其他变量的值也和预期一样,就是线程安全的。