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.