java final修饰符的用途

来源:互联网 发布:安卓相册软件 编辑:程序博客网 时间:2024/05/16 15:02

 
final类不能被继承,没有子类,final类中的方法默认是final的。 
final方法不能被子类的方法覆盖,但可以被继承。 
final成员变量表示常量,只能被赋值一次,赋值后值不再改变。 
final不能用于修饰构造方法。
 
 
final修饰的成员变量必须由程序员显示地指定初始值,系统不会对final成员进行隐式初始化
 
如果final修饰的局部变量在定义时没有指定默认值,则可在后面代码中对该final变量赋初始值,但只能一次,不能重复
 
final修饰基本类型变量时,不能对基本类型变量重新赋值,因此基本类型变量不能被改变。
使用final修饰的引用类型变量不能被重新赋值(引用变量所引用的地址不能被改变),但可以改变引用类型变量引用对象的内容
 
可执行“宏替换”的final变量
1、使用final修饰符
2、在定义该final变量时指定了初始值
3、该初始值可以在编译时就被确定下来
 
满足上面三个条件,这个final变量就不再是一个变量,而是相当于一个直接量
编译器会把程序中所有用到该变量的地方直接替换成该变量值。
除了那种为final变量赋值时赋直接量的情况外,如果被赋的表达式只是基本的算术表达式或者字符串连接运算,没有访问普通变量,调用方法java编译器同样会将这种final变量当成“宏变量”处理。


例如:下面定义了4个final“宏变量”
final int a = 5 + 2;
final double b = 1.2/3;
final String str = "疯狂" + "java";
final String book = "疯狂java讲义" + 99.0;
 
 

原创粉丝点击