1.不在常量和变量中出现混淆的字母。

2.莫让常量蜕变成变量。

3.三元操作符的类型必须一致。

4.避免带有变长参数的方法重载

5.别让null值和空值威胁到变长方法(KISS原装,Keep It simple stupid即懒人原装)

6.覆写变长方法也循环蹈矩

(1)重写方法不能缩小访问权限

(2)参数列表必须与被重写方法相同

(3)返回类型必须与被重写的方法相同或是其子类

(4)重写方法不能抛出新的异常,或值超出父类范围的异常,但是可以抛出更少的异常或者不抛出异常。

7.警惕自增的陷阱

  理解:i++和++i; i++表示的是先赋值后加1;++i表示的是先加1后赋值。

public class Client{
    public static void main(String[]args){
      int count=0;
      for(int i=0;i<10;i++){
       count=count++;
       }
      System.out.println("count="+count);     }
  }

 这个程序的结果为0;

 count++是一个表达式,是返回值,它的返回值就是count自加前的值,javas对自身加是这样处理的:首先把count的值(注意的是值,不是引用)拷贝到一个临时变量去,然后对count变量加1,最后返回临时变量去的值。

程序循环执行步骤:步骤1:jvm 把count 值(其值是0)拷贝到临时变量区;步骤2:count值加1,这时候count的值是1;

步骤三:返回临时变量区的值,注意这个值是0,没有修改过,步骤4:返回赋值给count,此时count值被重置成0

8.不要让旧语法困扰你

9.不要主动进行垃圾回收:因为垃圾回收机制:会 停止所有的响应,然后才检查内存中是否有可回收对象。

10.推荐toString方法。因为java提供的默认toString方法不友好,打印出来看不懂,不覆写不行。

11.覆写equals方法必须覆写hashCode方法

12.不要在本类中覆盖静态导入的变量和方法

13.显示声明UID

14.避免用序列化类在构造函数中为不变量赋值: 不变量:指带有final标识的属性是不变量。只能赋值一次,不能重复赋值。反序列化时构造函数不会被执行

15.避免为final变量复杂赋值

16.避免instanceof非预期结果:

     instanceof 是一个简单的二元操作符,他是用来判断一个对象是否是一个类的实类的,其操作类似于>=、==,非常简单

     instanceof 只能用于对象的判断,不能用于基本类型的判断。

    null instanceof String ;false:   若左操作数是null,结果就直接返回false,不再运算右操作数是什么类。

17.用偶判断,不用奇判断。因为:java取余(%标识符)算法
,模拟如下:

public static int remainder(int dividend,int divisor){
  return dividend-dividend/divisor*divisor;
}

18.优先选择基本类型:安全、性能、稳定方面都好。

  基本类型可以先加宽,再转变成宽类型的包装类型,但不能直接转变成宽类型的包装类型

19.不要随便设置随机种子

Random r=new Random(); 

设置随机种子Random r=new Random(10000);

20.接口中不要存在实现代码,因为它是一种契约。

21:静态代码一定要先声明后赋值

static {
  i=100;
}static int i=1;

22.不要重写静态方法,即使覆盖了后,也不生效

23.构造函数尽量简化

24.