JavaSE总结

  1. 继承的特点:

    子类继承父类,拥有父类的非私有成员
    
  2. 重写和重载:

    重写:发生在继承关系中,参数列表和返回值都相同。子类的修饰符不能大于父类。@Override
    重载:同名不同参,与返回值无关

  3. Final:

    修饰类:不能被继承

    修饰方法:不能被重写

    修饰变量:不能被修改

  4. 多态、好处与弊端:

    概念:父类的引用指向了子类的对象,从而执行不同的操作
    
    好处:增强扩展性
    
    弊端:父类不能使用子类特有的成员
    
  5. 装箱与拆箱:

    Jdk 5以后,装箱与拆箱都有jdk自动完成。基本<-->引用
    
  6. 常见的数据结构:

    栈:先进后出
    
    队列:先进先出
    
    链表:查询慢,增删快
    
    数组:查询快,增删慢
    
    堆、树、图
    
  7. 集合:
    Collection(单列集合)

    ​ List(有序、可重复)

               ArrayList( 底层是数组||查询快,增删慢||线程不安全)
               LinkedList(底层是链表||查询慢,增删快||线程不安全)
    
     Set(不可重复、没有带索引的方法|底层是链表)
               HashSet(哈希表)
    
               LinkedHashSet(链表+红黑树-->有序)
    
     Map(双列集合)
    
               HashMap( 8之前是数组+链表,之后多了红黑树)
    
               LinkedHashMap(双链表+红黑树+数组-->有序)
    

    HashMap的底层:

    1.在jdk 8之前是数组+链表,之后多了红黑树。储存方式为(key,value)形式。

    2.储存元素时如果发生哈希冲突,就先判断equals,相同就替换,不同就插入链表。

    3.当链表高度大于8时,就转为红黑树,当元素小于6时,退化为链表。

    4.它是线程不安全的,可以使用并发包的ConcurrentHashMap

  8. 线程和进程

    进程:指的是进入到内存的程序
    
    线程:进程的一部分
    

多线程运行原理

   调用start方法时,main方法和另一个线程在不同的栈空间,CPU会以很快的速度去切换执行。
  1. 实现线程的三种方式:

    ​ 继承Thread类

    ​ 实现Runnable接口

    ​ 实现Callable接口

  2. CAS与Synchronized区别

    CAS:比较并交换。每次都认为变量没有被修改,如果内存中的值和期望值相同才会修改,否则继续自旋判断。

    Synchronized:每次都认为变量已经被修改,执行前会锁对象。当执行结束后才会释放锁。所以效率低。

  3. 线程池运行原理

    使用一个容器储存线程,用的时候从线程池取出,用完归还。减少了线程的创建和销毁。

  4. 线程6个状态的名称

    新建(new) 等待(wait)运行(run) 阻塞(block)睡眠(sleep)死亡(dead)

  5. 递归

    方法自己调用自己

    弊端:栈内存溢出

  6. ==与equals的区别

    ==比较的是地址值

    equals比较的是值

    当一个对象没有重写equals方法,equals等价于==

    如果重写,就比较两个对象的值

  7. BIO/NIO/AIO

    同步阻塞

    同步非阻塞

    异步非阻塞

  8. 反射的概念

    通过class文件对象对文件进行解剖,获取各种成员

  9. XML的作用

    存储数据

    作为配置文件(框架)

  10. 有哪些XML约束技术

    1. dtd约束

    2. schema约束

  11. 动态代理

    在不改变方法的前提下,对方法进行增强

上一篇:JAVASE复习(2)


下一篇:javaSE学习的week12