根据上下文,java中final关键字的含义存在着细微的区别,但它通常指的是“不可改变的”不想改变可能有两种理由:设计和效率,由于这两个字差了很远,所以final可能被误用。 以下谈到了使用final的三种用法:数据,方法,和类。
final修饰数据 1,一个永不改变的编译时常量。 2,一个在运行时被初始化的值,而你不希望它被改变。 3,在对常量进行定义的时候,必须对其进行赋值。 4,一个static又是final的域只占据一个不能改变的存储空间。 5,java允许空白 final,所谓空白final是指被声明为final但又未给定初值的域。 6,final修饰参数 java允许在参数列表声明的方式将参数指明为final。这就意味着你无法更改参数引用所指向的对象。例:
public class text {
public class FinalArguments {
void with(
final Integer i) {
i =
1;
}
void without(Integer i) {
i =
1;
}
void f(
final int i) {
}
int g(
int i) {
return i +
1;
}
}
final修饰方法 1,把方法锁定,防止任何继承类修改它的含义。 2,效率问题,现版本jvm虚拟机已优化 3,类中所有的private关键字都隐式指为final,可以对private方法增添final修饰词,但并不会增加任何额外的意义。
final修饰类 1,当某个类的整体定义为final时,表明你不打算继承该类,而且也不允许别人这么做,或出于安全的考虑,你不希望它有子类。 例:
public class text{
class SmartBrain{}
final class Diansaur{
int i=
7;
int j=
9;
SmartBrain smartBrain =
new SmartBrain();
void f(){};
}
class FutherDia extends Diansaur{}
class FutherBra extends SmartBrain{}
}
个人简单总结,2017.10.21