final 对于常量来说,意味着值不能改变,例如 final int i=100。这个i的值永远都是100。但是对于变量来说又不一样,只是标识这个引用不可被改变,例如 final File f=new File("c:\\test.txt");那么这个f一定是不能被改变的,如果f本身有方法修改其中的成员变量,例如是否可读,是允许修改的。
你所问的变与不变比较模糊,比如“被final修饰的类不可以被继承”这个地方就没有什么变与不变的问题啊...,应该视具体情况决定。
按理解给出final的用法:
final可以修饰类、函数、变量。
1.被final修饰的类不可以被继承。—>这个地方没有什么变不变的问题,就是不可以继承。
2.被final修饰的方法不可以被复写(也就是重写、覆盖)。—>这个地方是方法根本就不让复写,也没有什么变不变的问题。
3.被final修饰的变量是一个常量,只能赋值一次,final既可以修饰成员变量,又可以修饰局部变量。—>这个地方是final修饰的变量是常量,内存中的变量的值不能再改变,视作常量。
比如定义了局部变量y:
final int y = 1;
y = 2;//由3知这个地方就是错误的。
希望对你有用。