Java总结--常用类库

  • StringStringBufferStringBuilder
    • String:是一个final类,任何赋值对String的改变,都会产生新的String对象的生成

    • StringBuffer:可变类,任何对它所指代的字符串的改变都不会产生新的对象,线程安全的。

    • StringBuilder:可变类,线性不安全的,不支持并发操作,不适合多线程中使用,但其在单线程中的性能比StringBuffer高。

  • Java异常
    • 异常体系
      Java总结--常用类库
      • Error:程序无法处理的系统错误,编译器不做检查(与JVM相关的错误,系统崩溃、虚拟机错误、内存空间不足、方法调用栈溢出等)
        • NOClassDefFoundError:找不到class定义异常
          Java总结--常用类库
        • StackOverflowError:栈溢出异常
        • OutOfMemoryError:内存溢出异常
      • EXception:程序可以处理的异常,捕获后可能恢复
        • RuntimeException:运行时异常,不可预知的错误,程序应当自行避免(数组下标越界,空指针访问等)
          • NullPointerException:空指针异常
          • ClassCastException:类型强制转换异常
          • IllegalArgumentException:传递非法参数异常
          • IndexOutofBoundsException:下标越界异常
          • NumberFormatException:数字格式异常
        • 非RuntimeException:非运行时异常,可预知,编译器可以检查(IOException、SqlException等)
          • ClassNotFoundException:找不带指定类异常
          • IOException:IO操作异常
    • 异常处理机制
      • 抛出异常:创建异常对象(包含异常类型,异常出现时的程序状态等信息),交由运行时系统处理
      • 捕获异常:寻找合适的处理器处理异常(ExceptionHandler能处理的异常类型和抛出的异常类型相符是为合适的异常处理器),否则终止程序
        • 注:finally要先于return执行
    • 异常处理原则
      Java总结--常用类库
      • 注:try-catch性能比if差,且开销比if
  • Java集合框架
    • 总览
      Java总结--常用类库
      Java总结--常用类库
      • 注:
        • HashSet底层实现是HashMap
        • TreeSet底层实现是TreeMap
        • 动态扩容就是创建一个新的数组,然后将原数组元素拷贝进去
    • Map
      Java总结--常用类库
      • HashMapHashTableConccurentHashMap区别
        Java总结--常用类库
      • HashMap
        • 线程不安全
        • 8以前:数组+链表
          Java总结--常用类库
        • 8以后:数组+链表+红黑树
          Java总结--常用类库
          • 源码:
            Java总结--常用类库
            Java总结--常用类库
            • 注:当链表节点大于8转换成红黑树,红黑树节点小于6转换成链表
              Java总结--常用类库
            • HashMap是lazyload的(用的时候在初始化)
              Java总结--常用类库
              Java总结--常用类库
            • key为null,hash值为0,即**HashMap可以存null
              Java总结--常用类库
          • HashMap put方法的逻辑
            Java总结--常用类库
    • ConccurentHashMap
      • 早期
        Java总结--常用类库
      • 当前:CAS+synchronized
        Java总结--常用类库
      • 源码
      • put
        Java总结--常用类库
        注:ConccurentHashMap不允许插入null
        Java总结--常用类库
        • put方法逻辑总结
          Java总结--常用类库

        • 并发工具类
          Java总结--常用类库
          Java总结--常用类库
          Java总结--常用类库
          Java总结--常用类库
          Java总结--常用类库
          Java总结--常用类库
          Java总结--常用类库
          Java总结--常用类库
          Java总结--常用类库
          Java总结--常用类库
          Java总结--常用类库

  • IO机制
    • BIO

      • InputStream、OutputStream,Reader、Writer
        Java总结--常用类库
    • NIO

      • 多路复用同步非阻塞IO(减少线程开销和线程切换带来的压力)
        Java总结--常用类库
        Java总结--常用类库
        • channel
          Java总结--常用类库
        • Buffers
          Java总结--常用类库
        • select (调用底层操作系统的多路复用)
          Java总结--常用类库
          Java总结--常用类库
    • AIO

      • 基于事件和回调机制
        Java总结--常用类库
    • 对比
      Java总结--常用类库