1.6 String、StringBuffer、StringBuilder三者之间的区别(必会)

    • String是字符串常量
    • StringBuffer是字符串变量;线程安全的
    • StringBuilder是字符串变量;线程非安全的

    StringBuffer 中的方法大都采用了 synchronized 关键字进行修饰
    单线程程序下,StringBuilder效率更快,因为它不需要加锁.

    1.7 接口和抽象类的区别是什么?(必会)
    实现:抽象类的子类使用extends 来继承;接口必须使用 implements 来实现接口。
    构造函数:抽象类可以有构造函数;接口不能有。
    main 方法:抽象类可以有 main 方法,并且我们能运行它;接口不能有 main 方法。
    实现数量:类可以实现很多个接口;但是只能继承一个抽象类。
    访问修饰符:接口中的方法默认使用public 修饰;抽象类中的方法可以是任意访问修饰符
    (jdk1.8后接口有静态和默认方法( 继承了接口也可以不想实现这个方法 ))

    6.5 Java中的继承是单继承还是多继承?
    单继承多实现,一个类可以实现多个接口,但只能继承一个类(接口也可以继承接口)

    6.6 Static关键字有什么作用?
    Static可以修饰内部类、方法、变量、代码块
    加在类上:静态内部类

    加在方法上:Static修饰的方法是静态方法,表示该方法属于当前类的,而不属于某个对象的,静态方法也不能被重写,可以直接使用类名来调用。在static方法中不能使用this或者super关键字。

    加在变量上:静态变量被所有实例所共享,不会依赖于对象。静态变量在内存中只有一份拷贝,在JVM加载类的时候,只为静态分配一次内存。

    静态代码块:类加载的时候执行一次(静态代码块可以有多个,如果有多个,按照先后顺序依次执行)

    6.7final在java中的作用,有哪些用法?
    1. 被fifififinal修饰的类不可以被继承
    2. 被fifififinal修饰的方法不可以被重写
    3. 被fifififinal修饰的变量不可以被改变.如果修饰引用,那么表示引用不可变,引用指向的内容可变.
    4. 被fifififinal修饰的方法,JVM会尝试将其内联,以提高运行效率
    5. 被fifififinal修饰的常量,在编译阶段会存入常量池中.