JavaSE总结-下部
由于JavaSE总结的太长,所以把它分为上部和下部,这份总结适合刚学习Java的朋友和要考试的学生朋友
上部传送门
string 、stringbuffer与stringbuilder的区别
- string
字符串,一堆字符的集合,可以看作字符数组,没有缓存区效率最低,线程不安全 - stringbuffer
线程安全,可变字符串,有缓存区且效率高 - stringbuilder
线程不安全,可变字符串,有缓存区,效率最高
值传递与引用传递
- 值传递
在方法的调用过程中,实参把它的实际值传递给形参,此传递过程就是将实参的值复制一份传递到函数中,这样如果在函数中对该值(形参的值)进行了操作将不会影响实参的值。因为是直接复制,所以这种方式在传递大量数据时,运行效率会特别低下。 - 引用传递
引用传递弥补了值传递的不足,如果传递的数据量很大,直接复过去的话,会占用大量的内存空间,而引用传递就是将对象的地址值传递过去,函数接收的是原始值的首地址值。在方法的执行过程中,形参和实参的内容相同,指向同一块内存地址,也就是说操作的其实都是源数据,所以方法的执行将会影响到实际对象。
基本数据类型和其包装类对应
装箱和拆箱
JDK5的新特性,具有自动装箱和拆箱操作,优化了代码的使用
- 装箱
基本数据类型转变成对应的包装类 - 拆箱
包装类转变成其对应的基本数据类型
==和equals区别
- ==
- 两边如果都是基本数据类型,比较的是值
- 一个是包装类,一个是基本数据类型,包装类型进行拆箱,比较值
- 两边都是包装类
- 如果都是整数类型,值是否在缓存池中,值相等,返回true,值不相等,返回false
- 如果都是整数类型,但是不在缓存池中,返回false
- 不是整数,都是new出来的,地址不一样,返回false
- equals
- 参数如果是基本数据类型
- 进行装箱操作,比较类型是否一致,类型不一致,返回false,类型一致,比较值,值一样是true,不一样是false
- 参数如果是包装类型
- 比较类型是否一致
- 类型不一致,返回false
- 类型一致,比较值,值一样是true,不一样是false
- 参数如果是基本数据类型
集合和数组的区别
Collection和Collections的区别
- Collection
集合的最顶级接口 - Collections
集合工具类
集合体系图
为什么迭代器是一个接口不是一个类
list
有序可重复
ArrayList、LinkedList、Vector的区别
Set
无序,不可重复
HashSet
set的子类,底层是哈希表
TreeSet
底层是红黑树,一种自平衡二叉树,会进行排序,元素必须可以排序,不然会报ClassCastException异常
Map和Collection的区别
- Map
- 集合顶层
- 双列
- key唯一
- 数据结构作用于key
- Collection
- 集合顶层
- 单列
- set唯一
- 数据结构作用于元素
LinkedHashMap
底层是hash表和链表,键唯一,有序
TreeMap
底层是红黑树,键唯一且排序
HashMap与Hashtable的区别
final、finally与finalize的区别
- final
修饰符 修饰的类不能被继承,修饰的变量是常量,修饰的方法不能被重写 - finally
异常捕捉的结构体之一,无论是否有异常都会执行finally代码块里的代码,一般用于释放资源 - finalize
GC垃圾回收机制的方法,用于回收前的操作
IO流
线程
网络模型
TCP与UDP的区别
面向对象设计模式
是一种思想
- 创建型
- 简单工厂模式
- 工厂方法模式
- 抽象工厂模式
- 建造者模式
- 原型模式
- 单例模式
- 结构型
- 外观模式
- 适配器模式
- 代理模式
- 装饰模式
- 桥接模式
- 组合模式
- 享元模式
- 行为型
- 模板方法模式
- 观察者模式
- 状态模式
- 职责链模式
- 命令模式
- 访问者模式
- 策略模式
- 备忘录模式
- 迭代器模式
- 解释器模式
java5的新特性
- 自动装箱拆箱
- 泛型
- 增强for循环
- 静态导入
- 可变参数
- 枚举
java7的新特性
- 类型推断
- 数字字面量下划线表示
- 可以表示二进制数0b或0B
- switch可以用String
- try自动释放资源
java8的新特性
- 底层数据结构的优化
哈希表+红黑树 - ConcurrentHashMap的改变
由以前的分段锁改成无锁机制,采用CAS算法 - lambda表达式
- Stream
可以操作集合的流类 - 接口式编程
- 永久代的摒弃
- jvm调优参数的改变
- 接口可以有方法
default修饰 - 尽可能的避免出现空指针异常 Optional