打字猴:1.700451931e+09
1700451931
1700451932 return cns[num];
1700451933
1700451934 }
1700451935
1700451936 (3)缩小变量的作用范围
1700451937
1700451938 关于变量,能定义在方法内的就定义在方法内,能定义在一个循环体内的就定义在循环体内,能放置在一个try……catch块内的就放置在该块内,其目的是加快GC的回收。
1700451939
1700451940 (4)频繁字符串操作使用StringBuilder或StringBuffer
1700451941
1700451942 虽然String的联接操作(“+”号)已经做了很多优化,但在大量的追加操作上StringBuilder或StringBuffer还是比“+”号的性能好很多,例如这样的代码:
1700451943
1700451944 String str=“Log file is ready……”;
1700451945
1700451946 for(int i=0;i<max;i++){
1700451947
1700451948 //此处生成三个对象
1700451949
1700451950 str+=“log”+i;
1700451951
1700451952 }
1700451953
1700451954 应该修改为:
1700451955
1700451956 StringBuilder sb=new StringBuilder(20000);
1700451957
1700451958 sb.append(“Log file is ready……”);
1700451959
1700451960 for(int i=0;i<max;i++){
1700451961
1700451962 sb.append(“log”+i);
1700451963
1700451964 }
1700451965
1700451966 String log=sb.toString();
1700451967
1700451968 (5)使用非线性检索
1700451969
1700451970 如果在ArrayList中存储了大量的数据,使用indexOf查找元素会比java.utils.Collections.binarySearch的效率低很多,原因是binarySearch是二分搜索法,而indexOf使用的是逐个元素比对的方法。这里要注意:使用binarySearch搜索时,元素必须进行排序,否则准确性就不可靠了。
1700451971
1700451972 (6)覆写Exception的fillInStackTrace方法
1700451973
1700451974 我们在第8章中提到fillInStackTrace方法是用来记录异常时的栈信息的,这是非常耗时的动作,如果我们在开发时不需要关注栈信息,则可以覆盖之,如下覆盖fillInStackTrace的自定义异常会使性能提升10倍以上:
1700451975
1700451976 class MyException extends Exception{
1700451977
1700451978 public Throwable fillInStackTrace(){
1700451979
1700451980 return this;
[ 上一页 ]  [ :1.700451931e+09 ]  [ 下一页 ]