Java基础复习---final关键字

final关键字

1.可以修饰类,函数,变量;

2.final修饰的类不可以被继承,但其可以继承其他类

3.final修饰的方法步可以被覆写,但可以覆写其父类的方法

4.final修饰的变量是一个常量,只能赋值一次;既可以修饰成员变量,也可以修饰局部变量

在描述事物时,一些数据的出现值是固定的,那么这时为了增强阅读性,都给这些值起个名字,方便阅读。

作为常量,书写规范:所有字母均大写,如果有多个单词组成,单词通过_来连接

5.内部类定义在类中的局部位置上时,只能访问该局部被final修饰的局部变量(JDK1.8中可以不加final

6.final修饰的引用型变量,表示该变量的引用不能改变(因为引用存的是分配好的地址,加上final后这个地址就定死了,也就是变量的引用不能改变了),而不是该变量的值不能变(地址定死了,意味着这个引用不能再指向别的对象了,但定死的地址里的数据可以改变,也就是该变量的值可以改变)。

如:private final Date hiredate;

仅仅意味着,存储在hiredate变量中的对象引用在对象构造之后不能被改变,而并不意味着hiredate对象是一个常量。

代码实例:

package finatest;
 
public class Test {
public static void main(String[] args) {
final Dog dog = new Dog("欧欧");
//执行new操作的时候JVM会分配一块内存,用来保存新创建的实例,实例对应的属性值都保存在这块内在中。
//给dog赋值的时候,实际上dog保存的是这块内存的地址。
//final限制的是dog的值只能是这个内存的地址,不能修改成其他地址,所以再次执行dog=new Dog("YY")的时候会报错。
//final不限制对内存中数据的修改,所以dog.name="YYY"是可以运行的。
dog.name = "美美";
////The final local variable dog cannot be assigned.
////It must be blank and not using a compound assignment
// dog = new Dog("亚亚");
}
}
 
package finatest;
 
public class Dog {
String name;
  public Dog(String string){
    this.name=name;
  }
}


 参考资料:

final修饰引用型变量

http://bbs.csdn.net/topics/390502626

猜你喜欢

转载自blog.csdn.net/u011296723/article/details/53008046