JavaSE总结-下部

由于JavaSE总结的太长,所以把它分为上部和下部,这份总结适合刚学习Java的朋友和要考试的学生朋友
上部传送门

string 、stringbuffer与stringbuilder的区别

  • string
    字符串,一堆字符的集合,可以看作字符数组,没有缓存区效率最低,线程不安全
  • stringbuffer
    线程安全,可变字符串,有缓存区且效率高
  • stringbuilder
    线程不安全,可变字符串,有缓存区,效率最高

值传递与引用传递

  • 值传递
    在方法的调用过程中,实参把它的实际值传递给形参,此传递过程就是将实参的值复制一份传递到函数中,这样如果在函数中对该值(形参的值)进行了操作将不会影响实参的值。因为是直接复制,所以这种方式在传递大量数据时,运行效率会特别低下。
  • 引用传递
    引用传递弥补了值传递的不足,如果传递的数据量很大,直接复过去的话,会占用大量的内存空间,而引用传递就是将对象的地址值传递过去,函数接收的是原始值的首地址值。在方法的执行过程中,形参和实参的内容相同,指向同一块内存地址,也就是说操作的其实都是源数据,所以方法的执行将会影响到实际对象。

基本数据类型和其包装类对应

JavaSE总结-下部

装箱和拆箱

JDK5的新特性,具有自动装箱和拆箱操作,优化了代码的使用

  • 装箱
    基本数据类型转变成对应的包装类
  • 拆箱
    包装类转变成其对应的基本数据类型

==和equals区别

  • ==
    • 两边如果都是基本数据类型,比较的是值
    • 一个是包装类,一个是基本数据类型,包装类型进行拆箱,比较值
    • 两边都是包装类
      • 如果都是整数类型,值是否在缓存池中,值相等,返回true,值不相等,返回false
      • 如果都是整数类型,但是不在缓存池中,返回false
      • 不是整数,都是new出来的,地址不一样,返回false
  • equals
    • 参数如果是基本数据类型
      • 进行装箱操作,比较类型是否一致,类型不一致,返回false,类型一致,比较值,值一样是true,不一样是false
    • 参数如果是包装类型
      • 比较类型是否一致
      • 类型不一致,返回false
      • 类型一致,比较值,值一样是true,不一样是false

集合和数组的区别

JavaSE总结-下部

Collection和Collections的区别

  • Collection
    集合的最顶级接口
  • Collections
    集合工具类

集合体系图

JavaSE总结-下部

为什么迭代器是一个接口不是一个类

JavaSE总结-下部

list

有序可重复

ArrayList、LinkedList、Vector的区别

JavaSE总结-下部

Set

无序,不可重复

HashSet

set的子类,底层是哈希表

TreeSet

底层是红黑树,一种自平衡二叉树,会进行排序,元素必须可以排序,不然会报ClassCastException异常

Map和Collection的区别

  • Map
    • 集合顶层
    • 双列
    • key唯一
    • 数据结构作用于key
  • Collection
    • 集合顶层
    • 单列
    • set唯一
    • 数据结构作用于元素

LinkedHashMap

底层是hash表和链表,键唯一,有序

TreeMap

底层是红黑树,键唯一且排序

HashMap与Hashtable的区别

JavaSE总结-下部

final、finally与finalize的区别

  • final
    修饰符 修饰的类不能被继承,修饰的变量是常量,修饰的方法不能被重写
  • finally
    异常捕捉的结构体之一,无论是否有异常都会执行finally代码块里的代码,一般用于释放资源
  • finalize
    GC垃圾回收机制的方法,用于回收前的操作

IO流

JavaSE总结-下部

线程

JavaSE总结-下部
JavaSE总结-下部
JavaSE总结-下部
JavaSE总结-下部

网络模型

JavaSE总结-下部

TCP与UDP的区别

JavaSE总结-下部

面向对象设计模式

是一种思想

  • 创建型
    • 简单工厂模式
    • 工厂方法模式
    • 抽象工厂模式
    • 建造者模式
    • 原型模式
    • 单例模式
  • 结构型
    • 外观模式
    • 适配器模式
    • 代理模式
    • 装饰模式
    • 桥接模式
    • 组合模式
    • 享元模式
  • 行为型
    • 模板方法模式
    • 观察者模式
    • 状态模式
    • 职责链模式
    • 命令模式
    • 访问者模式
    • 策略模式
    • 备忘录模式
    • 迭代器模式
    • 解释器模式

java5的新特性

  • 自动装箱拆箱
  • 泛型
  • 增强for循环
  • 静态导入
  • 可变参数
  • 枚举

java7的新特性

  • 类型推断
  • 数字字面量下划线表示
  • 可以表示二进制数0b或0B
  • switch可以用String
  • try自动释放资源

java8的新特性

  • 底层数据结构的优化
    哈希表+红黑树
  • ConcurrentHashMap的改变
    由以前的分段锁改成无锁机制,采用CAS算法
  • lambda表达式
  • Stream
    可以操作集合的流类
  • 接口式编程
  • 永久代的摒弃
    JavaSE总结-下部
    JavaSE总结-下部
  • jvm调优参数的改变
  • 接口可以有方法
    default修饰
  • 尽可能的避免出现空指针异常 Optional

相关文章: