final修饰变量表示变量初始化后就不能再改变。
一、对于基础类型来说,用final修饰后其值不可以改变。
1.
final int a;
a = 5;
2.final int a = 5;
二、对于引用类型来说,用final修饰后其引用的对象不可改变,但可以改变对象的内容。
java中用final修饰函数的参数,只是函数体内不能修改这个形参所指向的对象,但是仍能修改对象内容
void f ( final String str){
str = new String();//不允许
str.toLowerCase();//允许
}
三、final 与 static final
public class T {
final int a = new Random(10).nextInt();
static final int b = new Random(10).nextInt();
public static void main(String[] args) {
T t1 = new T();
T t2 = new T();
System.out.println(t1.a);
System.out.println(t1.b);
System.out.println(t2.a);
System.out.println(t2.b);
}
}
结果:
t1.a != t2.a;
t1.b == t2.b;
四、例子
1、
final int i = 0;
i++;//允许
2、
final String s = "abc";
s.toLowerCase();//允许
3、
final int[] a = {1,2,3};
a[1] = 1;//允许
a = new int[5];//不允许