java讲义(七)final修饰符

来源:互联网 发布:9本java程序员必读的书 编辑:程序博客网 时间:2024/06/09 22:03

1.1 final成员变量

final关键字可用于修饰类,变量和方法,用于表示它修饰的类,方法和变量不可改变。final修饰变量时,表示该变量不可被改变。final既可以修饰成员变量(类变量和实例变量),也可以修饰局部变量,形参。有的书上介绍说final修饰的变量不可被赋值,这种说法是错误的,严格的说法是,final修饰的变量不可改变,一旦获取初始值,该final变量的值就不能被重新赋值。

因此java语法规定:final修饰的成员变量必须有程序员显示地指定初始值,系统不会对final成员进行隐式的赋值。

归纳起来,final修饰的类变量,实例变量能指定初始化值的地方如下:、

1.类变量:必须在静态初始化块中指定初始值或声明该类变量时指定初始值,而且只能在这2个地方其中之一指定。

2.实例变量:必须在非静态初始化块,声明该实例变量或构造器中指定初始值,而且只能在这3个地方的其中之一指定。


1.2 final局部变量

 系统不会对局部变量进行初始化,局部变量只能有程序员显式初始化,因此使用final修饰局部变量既可以定义时指定初始值,也可以不指定初始值。如果final修饰的局部变量在定义时没有指定默认值,则可以在后面代码中对该final变量赋初始值,但只能一次,不能重复赋值


1.3 final修饰基本类型变量与引用类型变量的区别

当使用final修饰基本类型变量时,不能对基本类型变量重新赋值,因为基本类型变量不能被改变,但是对于引用类型变量而言,它保存的仅仅是一个引用,final只保证引用类型变量所引用的地址不改变,即引用同一个对象,但这个对象完全可以发送改变。


1.4 final变量 可执行的““宏替换”

 对于一个final变量而言,不管是类变量,实例变量,局部变量,只要该变量满足三个条件,这个final变量就不再是一个变量,而相当于一个直接量

1.使用final修饰符修饰

2.在定义该final变量时指定了初始值

3.该初始值可以在编译时就被确定下来


1.5 final方法

 final修饰的方法不可重写 可以重载,如果出于某种原因,不希望子类重写父类的方法,就可以使用final来修饰







0 0
原创粉丝点击