final与static关键字
1.final:
a.可以修饰变量,被修饰变量就变成了常量,并且只能被赋值一次
public static final double PI=3.1415926//PI是个固定的值,我们可能会忘掉
//用PI常量存储,直接通过Math.PI来使用
final Person p=new Person();//p的地址值不能被重新赋值,p自始至终都指向Person对象
b.final修饰的方法不能被子类重写
c.final修饰的类不能被继承
2.static:
a.被静态修饰的非private修饰的成员变量或成员方法,可以在类外通过 类名.静态变量 或 类名.静态方法(传参)
b.静态成员随着类的加载而加载,静态成员存放在方法区,此时肯可能没有创建对象
因此静态成员可以直接通过类名访问
静态方法没有this和super关键
c.静态变量当加载到方法区就有默认值
非static修饰成员变量当创建该类的对象的时候才有默认值
d.静态成员被所有的对象共享一份 |
|