Joker Lee
对
编写高质量代码
的书评
发表时间:2012-11-14 22:11:12
这本书对于我这种从C、C++转过来的野路子Java选手,拿来补漏语言只是还是不错的
判断偶数 i%2==0 因为-1%2=-1而不是1
java里int i = 0; i = i++; 这时i==0,js也是如此。但是C/C++是1
静态简单变量会被直接编译到class文件中,所以更新了一个静态常量,需要重新编译所有引用了这个常量的类(JRebel的更新有这个bug)
四舍五入 银行家舍入 P42
构造代码块 {},在执行每个构造函数前调用(除了有this()调用的构造函数)
匿名类只能使用构造代码快作为构造函数
原始类型数组不能作为Arrays.asList的参数,因为基本类型不能泛型化
ArrayList用下标遍历效率更高(对于大ArrayList尽量不要用foreach语法糖,),LinkedList不要用下标遍历
Collection#addAll 并集
Collection#retainAll 交集
Collection#removeAll 差集
TreeSet在元素改变后不会重新排序
switch枚举需要判断null值
enumset处理小于等于64个值的枚举类型时只需要一个long,大于之后需要用多个long,所以枚举尽量不要超过64个值
调用泛型方法时指定泛型类型 List<Integer> a = Arrays.<Integer>asList(12);
泛型多重界限 <T extends A & B>
不要在finally中处理返回值
不要把异常当作正常逻辑,比如包含判断之类
显示的加锁和解锁必须处理异常,避免因为异常锁一直不释放
google guava工具包 多值Map,字符串joiner
apache collection双向map
Joda日期时间工具包