1.单例模式

    单列模式种类: 1.1 饿汉式 :线程安全,类加载期间进行初始化 1.2 饱汉式: 线程不安全,使用到才进行初始化 1.3 双检锁: 线程安全,饱汉式的基础上上同步锁

    2.反射

    Java 中的反射机制是指在运行状态中,对于任意一个类都能够知道这个类所有的 属性方法,并且对于任意一个对象,都能够调用它的任意一个方法;这种动态获取信息以及动态调用对象方法的功能成为Java 语言的反射机制。

    2.1 获取Class对象的3种方式

    • 类属性获取: 类名.Class;
    • 对象调用方法获取:对象.getClass;
    • 使用Class的静态方法(最安全,性能最好):Class.forName(“类路径”);//使用时记得类型转换

    3.jdk1.8新特性
    3.1 Lambda表达式 允许把函数作为一个方法的参数使用
    new Thread((参数)->{方法体});//参数和方法只有一独一份括号可省略,

    3.1.2 方法引用

    image.png

    3.1.3 函数式接口

    有且仅有一个抽象方法的接口叫函数接口,函数接口可被隐性转为 Lambda表达式, 通常函数式接口上会添加@FunctionalInterface 注解

    3.2 接口允许定义默认方法和静态方法

    3.3 Stream api 新添加的Stream API(java.util.stream)把真正的函数式编程风格引入到 Java 中。这种风格将要处理的元素集
    合看作一种流,流在管道中传输,并且可以在管道的节点上进行处理,比如筛选,排序,聚合等。

    3.4 6 日期/时间类改进
    第三方工具包,如 commons-lang 包等。不过JDK8 出现之后这个改观了很多,比如日期时间的创建、比较、调整、格式化、时间间隔等。
    这些类都在java.time 包下,LocalDate/LocalTime/LocalDateTime。

    4.Static关键字
    Static可以修饰内部类、方法、变量、代码块
    Static修饰的类是静态内部类
    Static修饰的方法是静态方法,表示该方法属于当前类的,而不属于某个对象的,静态方法也不能被重写,可以直接使用类名来调用。在static方法中不能使用this或者super关键字。
    Static修饰变量是静态变量或者叫类变量,静态变量被所有实例所共享,不会依赖于对象。静态变量在内存中只有一份拷贝,在JVM加载类的时候,只为静态分配一次内存。
    Static修饰的代码块叫静态代码块,通常用来做程序优化的。静态代码块中的代码在整个类加载的时候只会执行一次。静态代码块可以有多个,如果有多个,按照先后顺序依次执行

    5.Java中的单继承和多继承

    Java中既有单继承,又有多继承。对于java类来说只能有一个父类,对于接口来说可以同时继承多个接口

    6.final在java中的作用,有哪些用法?
    1. 被final修饰的类不可以被继承/String 类被final修饰
    2. 被final修饰的方法不可以被重写
    3. 被final修饰的变量不可以被改变.如果修饰引用,那么表示引用不可变,引用指向的内容可变.
    4. 被final修饰的方法,JVM会尝试将其内联,以提高运行效率
    5. 被final修饰的常量,在编译阶段会存入常量池中.
    除此之外,编译器对final域要遵守的两个重排序规则更好:
    在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序
    初次读一个包含final域的对象的引用,与随后初次读这个final域,这两个操作之间不能重排序