格式
//建议下面这样写
boolean isComeFromChina = obj != null && (obj.get… == … || …) && (… || … & …);
if(isComeFromChina ) {…}方法参数在定义和传入时,多个参数逗号后边必须加空格
method(“a”, “b”, “c”);在if/else/for/while/do语句中必须使用大括号,即使只有一行代码
OOP规约
所有的相同类型的包装类对象(Integer/Long/Float…)之间值的比较,全部使用equals方法比较。
Integer i = 128 –> Integer.valueOf() 源码显示-128到127的值会到方法区,其他值会在堆上创建
Integer与int比较会自动拆包
当一个方法调用同样可以使用常量来调用时尽量使用常量来调用方法,可以编码NPE问题,典型的equals方法和一些判断方法
//推荐这样写
String str ..
if(“123”.equals(str))
- 使用索引访问用String的split方法得到的数组时,需做最后一个分隔符后有无内容的检查,否则会有抛IndexOutOfBoundsException的风险
String str = “a,b,c,,”;
String[] ary = str.split(“,”);
//预期5,结果是3
System.out.println(ary.length);
异常
1.以下几种情况一定要有finally块释放操作
?try块中申请了资源对象、流对象必须在finally中进行资源释放,java7建议使用try-with-resources方式
?try中使用J.U.C中Lock时必须在finally块中release锁
2.不能在finally块中使用return,finally块中的return返回后方法结束执行,不会再执行try块中的return语句
集合
ArrayList的subList结果不可强转成ArrayList,否则会抛出ClassCastException异常
subList返回的是内部类
2.使用工具类Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法,它的add/remove/clear方法会抛出UnsupportedOperationException异常
还是内部类问题
- 泛型通配符