switch case

  • switch case 只支持int类型匹配,其它类型都会被语法糖转换成int类型。【泛型、自动拆箱装箱、foreach循环都是语法糖】

switch(param)调用了String 的hashcode方法
switch case判断算法,实际上转整型后二分法计算

  • 当 switch 括号内的变量类型为 String 并且此变量为外部参数时,必须先进行 null 判断。

Float最小值

  • Float有两个最小值,一个规格化以后的最小值,一个是显示赋值的最小值

hashcode 和 equals 处理。

  1. Set存储不重复的对象,依靠hashcode 和 equals进行判断。
  2. 自定义对象作为map的key,必须重写hashcode 和 equals
  3. String 因为覆写了 hashCode 和 equals 方法,所以可以愉快地将 String 对象作为 key 来使用。

集合判空

判断所有集合内部的元素是否为空,使用 isEmpty()方法,而不是 size()==0 的方式。 说明:在某些集合中,前者的时间复杂度为 O(1),而且可读性更好。
image.png

ThreadLocal

必须回收自定义的 ThreadLocal 变量,尤其在线程池场景下,线程经常会被复用, 如果不清理自定义的 ThreadLocal 变量,可能会影响后续业务逻辑和造成内存泄露等问题。 尽量在代理中使用 try-finally 块进行回收。

Double-check

image.png

If-else 优化

image.png

在调用 RPC、二方包、或动态生成类的相关方法时,捕捉异常必须使用 Throwable 类来进行拦截。