对于基本类型来说,不可变说的是变量当中的数据不可改变
对于引用类型来说,不可变说的是变量当中的地址值不可改变
—旦使用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的成员变量进行赋值。
代码: