技巧一:
慎用可变参数
在需要写可变参数的时候,一定要注意的是,可变参数有可能参数个数为0,这个时候可能会导致异常,那么为了确保在传输参数的时候一定至少有一个数或者说,确保这个方法传入的参数至少有一个,这个时候可以使用下面的方式。这样当一个参数都不传的时候,编译是不通过的,所以避免了发生错误。
/* *可变参数要谨慎使用 */ public class VarArags { //累加方法:可变参数 0~很多 static int sum(int... args) { int sum = 0; if(args.length==0){ //异常处理 } for (int arg : args) sum += arg; return sum; } //累加方法:可变参数 1~很多 static int sum1(int first ,int... args) { int sum = 0; //if(first) if(args.length==0){ //异常处理 } for (int arg : args) sum += arg; return sum; } public static void main(String[] args) { System.out.println(sum(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)); sum(); } } |
技巧二:
如何处理null
在写一个工具类的时候,如果条件不满足,通常我们需要返回一个null,可是对于调用方来说这是一个非常不友好的,那么通常我们会用Collections.EMPTY_LIST来返回一个空的集合。这样调用方就不需要再次进行判断是否非null。
public class Tools { private Tools(){ } public static List find13(){ ///啪啪啪的代码 //return null; return Collections.EMPTY_LIST; } public static void main(String[] args) { List list = find13(); if(list ==null){ //空处理 } } } |
技巧三:
JDK已经为我们提供了几个标准的异常,我们在使用的时候可以直接用他们的。如果传入的参数不符合条件,那么我们可以抛出一个异常,他就是IllegalArgumentException
如果接收的对象状态不对,那么我们可以抛出一个IllegalStateException。
如果接收的参数为null我们可以抛出一个空指针异常NullPointerException。
如果在做某件事的时候,条件不满足,那么可以使用,UnsupportedOperationException。
public class StandardException { public static void main(String[] args) throws Exception { int count =0; if(count<0){//调用者传递的参数不合适 throw new IllegalArgumentException(""); } int state =0; if(state!=1){//接收的对象状态不对 throw new IllegalStateException(""); } Object o = new Object(); if(o==null){//接收的对象为空 throw new NullPointerException(""); } //返回结果---找不到对象! } protected boolean tryAcquire(long arg) { throw new UnsupportedOperationException(); } } |
技巧四:
在使用局部变量的时候,应该尽量的缩小作用域的范围,也就是说哪里需要就在哪里写,不要总在开头部分统一定义,这样有可能会在不需要的时候,可能不注意的时候会构成错误或者干扰。
在需要使用字符串进行频繁的进行累加操作的时候,尽量不要使用加号,尽量使用stringbuffer。尤其是在写log日志的时候。在进行字符串拼接的时候,已经无意中创建了对象,那么这时候效率是非常低的,这个时候可以使用stringbuffer。或者通过log的占位符的方式来写。