1.final修饰属性:可以赋值的位置:显式初始化、代码块中初始化、构造器中初始化。不能通过set方法或者“对象.属性”进行赋值
class A{
final int A1 = 0;//显式初始化
final int A2;
final int A3;
{
A2 = 1;//代码块中初始化
}
A(int num){
A3 = num;//构造器中初始化
}
}
2.final修饰局部变量:是一个常量,不能修改。当final修饰的是形参时,表明此形参是常量,当调用此方法时,给常量赋一个实参,一旦赋值后,只能在方法体内使用形参,不能修改形参。
class Person{public int i;}
public void add(final Person p) {
p.i++;//这个没问题,因为final修饰的是p不是i,p的地址没变就可以,i变不变都行。若是在方法中有p=new Person();则出错
}
五、static final修饰属性:全局常量。static final也可以修饰方法,不过见的少。


