final关键字

final修饰的类无法继承;

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

final修饰的局部变量,一旦赋值无法重新赋值。(当final声明时没有赋值,可以赋值,但是再不允许赋值了)**只能赋一次值

 final修饰的引用:

  该引用只能指向一个对象,并且它只能永远指向该对象,无法再指向其他对象。但是其内部的数据是可以被修改的。

public class Final{
    public static void main(String[] args){
        final User user = new User();
        user.weight = 3.0;
        System.out.println(user.weight);
    }
}

class User{
    double height = 1.0;
    
    double weight = 2.0;
    
    public User(){
        //this.weight = weight;
    }
    public User(double b){
        this.weight = b;
    }
}

 

  在该方法的执行过程中,该引用指向对象之后,该对象不会被垃圾回收器回收,直到当前方法结束,才会释放空间。

 实例变量既然使用了final修饰了,说明该实例变量值不会随着对象的变化而变化。

final修饰实例变量,系统不会赋默认值,必须手动赋值。

手动赋值:在变量后面赋值可以,在构造方法中赋值也可以。。

 

**********注意:::实例变量既然使用了final修饰了,说明该实例变量的值不会随着对象的变化而变化。

          该实例变量前面应该加static关键字,变为静态的,存储在方法区。

*********开发规范:static final联合修饰的变量称为“常量”。

    常量名建议全部大写,每个单词之间采用下划线衔接。

常量和静态变量的区别:

  常量的值不能变。

  常量和静态变量,都是存储在方法区,并且都是在类加载时初始化。

  常量一般都是公开的。

public class Final{
public static void main(String[] args){ } } class User{ final double height = 1.0; final double weight; public User(){ this.weight = 2.0; } public User(double b){ this.weight = b; } }

 

posted @ 2022-06-25 11:44  _八级大狂风  阅读(32)  评论(0编辑  收藏  举报