java中final关键字,修饰变量、引用、类、方法、实例变量的问题

一、final在英语中的意思

      final在英语中表示 最终的、不可变更的。

二、final修饰的变量

局部变量:

        final修饰的局部变量一旦赋值就不能再次赋值,只能赋值一次。若是再次赋值会报错;

实例变量:

        final修饰实例变量,也是只能赋值一次。

        final修饰的实例变量,系统不会赋默认值,必须程序员手动赋值。如果不手动赋值,就会报错。

给final修饰的实例变量赋值

        1、直接赋值

public class Text{
    final double A=10;
}

        2、用构造方法赋值(实例变量在构造方法执行的过程中会赋默认值,在构造方法中在系统赋默认值之前赋值就没有问题)

public class Text{
    //定义实例变量
    final double A;
    //构造方法
    public Text(){
    this.A=50;
    }
    //或者用带参数构造方法赋值
    public Text(double b){
    this.A=b;
    }
}

        3、final修饰的实例变量一般用stastic修饰(此变量叫做常量)

例如:

static final double PI=3.1415926;

        常量的命名规范:建议:命名常量单词所有字母都大写,单词与单词之间用下划线链接;

        常量的值不能变;常量和静态变量一样都存储在方法区,并且都在类加载的时候初始化;

三、final修饰的方法

        final修饰的方法无法被重写(覆盖);

四、final修饰的类

        final修饰的类无法被继承;

五、final修饰的引用

          final修饰的引用一旦指向一个对象,就不能在重新指向其他对象,虽然指向不能改变,但是该引用指向的对象内部的数据是可以修改的;

例如:

demo a=new demo();
a=new demo1();//编译通过
final demo a=new demo();
a=new demo1();  //编译报错
//提示:Cannot assign a value to final variable 'a'
 //定义final修饰的引用
 final demo a = new demo();
 //通过引用给demo类中的实例变量A赋值
 a.A = 20;
 //编译通过

总结:final表示最终的、不可变的,无论final修饰什么,都离不开本意。

    原文作者:张同学%
    原文地址: https://blog.csdn.net/qq_39140680/article/details/123498153
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞