java中的final关键字
来源:互联网 发布:sem优化方案 编辑:程序博客网 时间:2024/06/05 02:14
final最基本的意思是不能改变
1.修饰数据
最常见的用法:
public static final int i= 1;
当然,初始化的值并不一定直接是基本数据类型:
final int i = (int)(Math.random()*20);也可以是对象,这个时候只是表示这个对象句柄不能改变,但对象中的值仍然是可以改变的。
class IntValue { int i = 1;}final IntValue v= new IntValue();v.i++;
有一种情况,final值定义的时候并未初始化,而是在构造器中进行初始化。(只能在构造器中初始化,且构造器中必须对其初始化)
final int i;//构造函数public Demo(){ i=1;}
除了修饰常数,也能修饰自变量,表示方法中不能修改变量值:
int g(final int i) { //i++;// Can't change return i + 1; }
2.修饰方法
之所以要使用final 方法,是出于对两方面理由的考虑。第一个是为方法“上锁”,防止任何继承类改变它的本来含义。设计程序时,若希望一个方法的行为在继承期间保持不变,而且不可被覆盖或改写,就可以采取这种做法。采用final 方法的第二个理由是程序执行的效率(jvm会对final作适当优化),但这个理由并不是使用final的主因,而且也并不能总是保证提升效率,所以这里不作过多研究。
2.修饰类
如果说整个类都是final,就表明自己不希望从这个类继承,或者不允许其他任何人采取这种操作。除此之外,也会有一些效率上的提升。
该类的数据成员既可以是 final,也可以不是。应用于final 的规则同样适用于这些数据成员,无论类是否被定义成final。
对于该类的方法来说,加不加final关键字,实际上它都有final的效果。
关于类是final,而数据成员不是final的情况,如下所示:
//直接报错,final明确表示不可继承//class FinalClassSon extends FinalClassFather{}final class FinalClassFather{ int i=1; public void change(){i++; }}public class FinalTest { public static void main(String[] args) { FinalClassFather f=new FinalClassFather(); f.change(); System.out.println(f.i);//类为final不代表类中的变量final f.i++; System.out.println(f.i); }}
0 0
- Java中的final关键字
- JAVA中的关键字FINAL
- java中的final关键字
- java中的final关键字
- java中的final关键字
- JAVA中的final关键字
- java中的final关键字
- JAVA中的final关键字
- Java中的final关键字
- Java 中的关键字 final
- Java中的final关键字
- Java中的final关键字
- Java中的final关键字
- Java中的final关键字
- java 中的final关键字
- JAVA中的final关键字
- JAVA中的final关键字
- Java中的关键字final
- Glide图片加载与ImageLoade其他图片加载的区别
- C语言之学生管理系统代码(完整)
- OpenCV_(2):常用数据结构和函数
- 并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue用的实例
- 反编译Android APK及防止APK程序被反编译
- java中的final关键字
- Flume初介绍和命令行使用
- JavaScript数据类型
- 负载均衡,会话保持,session同步
- 代码中设置控件间距
- JNDI数据库连接池配置
- iOS开发~修改UITextField的placeholder的字体大小、颜色
- String 属性
- Fast Randomized SVD