switch case
- switch case 只支持int类型匹配,其它类型都会被语法糖转换成int类型。【泛型、自动拆箱装箱、foreach循环都是语法糖】
switch(param)调用了String 的hashcode方法
switch case判断算法,实际上转整型后二分法计算
- 当 switch 括号内的变量类型为 String 并且此变量为外部参数时,必须先进行 null 判断。
Float最小值
- Float有两个最小值,一个规格化以后的最小值,一个是显示赋值的最小值
hashcode 和 equals 处理。
- Set存储不重复的对象,依靠hashcode 和 equals进行判断。
- 自定义对象作为map的key,必须重写hashcode 和 equals
- String 因为覆写了 hashCode 和 equals 方法,所以可以愉快地将 String 对象作为 key 来使用。
集合判空
判断所有集合内部的元素是否为空,使用 isEmpty()方法,而不是 size()==0 的方式。 说明:在某些集合中,前者的时间复杂度为 O(1),而且可读性更好。
ThreadLocal
必须回收自定义的 ThreadLocal 变量,尤其在线程池场景下,线程经常会被复用, 如果不清理自定义的 ThreadLocal 变量,可能会影响后续业务逻辑和造成内存泄露等问题。 尽量在代理中使用 try-finally 块进行回收。
Double-check
If-else 优化
在调用 RPC、二方包、或动态生成类的相关方法时,捕捉异常必须使用 Throwable 类来进行拦截。