对于基本类型来说,不可变说的是变量当中的数据不可改变
对于引用类型来说,不可变说的是变量当中的地址值不可改变

—旦使用final用来修饰局部变量,那么这个变量就不能进行更改。

—次赋值,终生不变

public static void main(String[] args) {

        int num = 1;
        System.out.println(num);

        num = 2;
        System.out.println(num);
        //—旦使用final用来修饰局部变量,那么这个变量就不能进行更改。
        //—次赋值,终生不变”
        final int num2 = 200;
        System.out.println(num);

        final int num3;
        num3 = 30;

//        对于基本类型来说,不可变说的是变量当中的数据不可改变
//        对于引用类型来说,不可变说的是变量当中的地址值不可改变

        Student s = new Student("赵丽颖");
        System.out.println(s);
        System.out.println(s.getName());
        s = new Student("霍元甲");
        System.out.println(s);
        System.out.println(s.getName());

      final   Student s2 = new Student("高圆圆");
        System.out.println(s2.getName());
        s2.setName("高圆圆圆圆圆圆圆圆");
        System.out.println(s2.getName());

    }

public class Student {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Student(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                '}';
    }

final关键字用于修饰成员变量:

对于成员变量来说,如果使用final关键字修饰,那么这个变量也照样是不可变。

由于成员变量具有默认值,所以用了final之后必须手动赋值,不会再给默认值了

对于final的成员变量,要么使用直接赋值,要么通过构造方法赋值,二者选其-。

必须保证类当中所有重载的构造方法,都最终会对于inal的成员变量进行赋值。

 

代码:

 

 

posted on 2022-07-03 18:17  淤泥不染  阅读(218)  评论(0编辑  收藏  举报