java final修饰符的用途(转载)

转载地址:http://hbiao68.iteye.com/blog/1909231

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;

posted @ 2015-11-03 10:49  青青子衿J  阅读(298)  评论(0)    收藏  举报