1、jdk,jre,jvm之间的关系
    jdk是由jre和工具包组成的,jre是由jvm虚拟机和类库组成的。jvm是指java虚拟机,他是java跨平台的实现原理
    2、什么是跨平台,原理是什么
    java的程序运行在java虚拟机,每个系统部署自己对应版本的jre就可以运行java程序,所以java可以跨平台运行,因为他运行在java虚拟机。
    3、面对对象四大特性
    继承—-代码重用性,继承了父类非私有的属性,并且可以重写方法,实现功能
    多态—-指具体运行方法在编译时并不确定,要调用时才确定。例如接口,继承
    抽象——-指一类对象的共同属性或者行为,就可以抽象
    封装——-将对象封装,对象的属性私有化,并提供给对外的访问方法。
    4、四大访问修饰符
    private—当前类能访问
    defualt—当前类以及同包的能访问
    protected—当前类以及同包及子类
    public—都可以
    5、final的作用
    修饰变量,不能修改
    修饰方法,不能重写
    修饰类,不能继承
    6、final,finally,finalize区别
    final如上
    finally是trycatch的之后不管是否报错都会执行的语句
    finalized是垃圾回收的方法
    7、方法重写,重载
    方法重写通常发生在父子,子类重写父类的方案,方法名相同,参数列表相同,实现逻辑不同
    方法重载通常发生在一个类里面,指方法名相同,但是参数列表不同,比如类构造方法
    8、break,return,continue区别
    break结束循环体。
    continue结束当前循环,继续下一次循环
    return结束当前方法。
    9、抽象类和接口比较
    抽象类和接口都不能实例化,只能继承或者实现,但是单继承,多实现,并且抽象类方法可以拥有自己的变量,接口一般不定义,定义的话默认也是static和final修饰。接口中的方法默认是public的,抽象类随意。
    10、==和equals
    ==基础类型的数据比较是值,引用数据类型比较的是内存地址
    equals比较的是对象的值
    11、hashcode和equals
    hashcode 是获取对象的哈希值,返回一个int类型的数值,两个对象相等,那么他们的hashcode相等,但是哈希值相等并不一定,值相等,equals用作比较值,所以一起判断可以判断对象是否相等。
    12、io流区分
    输入流,输出流
    字节流,字符流
    节点流,处理流
    13、BIO、NIO、AIO区别
    BIO,同步阻塞IO
    NIO,同步非阻塞IO,主要是通过信道传输
    AIO,异步非阻塞IO
    14、反射
    通过字节码对象,获取对象的属性,方法。
    获取方式
    对象.getclass
    类.class
    class.forname(路径)
    15、string、StringBuffer、stringbuilder
    string是不可变字符串,他的底层是一个char数组,使用final修饰,所以他不能更改,每次创建都是一个新的对象
    StringBuffer是线程安全的可变字符串,他底层没有被final修饰
    stringbuilder是线程不安全的可变字符串。
    16、class文件的作用
    class文件是java虚拟机编译生成的文件,保证了java跨平台运行,并且提高了java执行程序的运行效率。
    17、java和c++的区别
    java单继承,c++多继承
    java没有指针直接操作内存,c++有。所以java更安全
    java底层有GC,自动释放内存。
    18、java基础数据类型
    整数型—byte、short、int、long
    字符型—char
    浮点型—double、float
    布尔—boolean
    19、swich参数类型
    java1.8支持字符串,枚举,基础数值类型
    20、自动拆箱与自动装箱
    将基本数据类型包装成对应的引用数据类型,拆箱反之。
    integer应用数据类型的值在-128到127之间的值比较是相等的。因为他们都是引用常量池中的对象。