java15 final

final关键字

final是一个关键字,最终的,不可变的。
final修饰的类无法继承。
final修饰的方法无法覆盖。
final修饰的变量一旦赋值之后,不可以重新赋值。
public final class A {
}

public class B extends A { //这里会显示编辑错误,因为A是final修饰,不能继承

}

public class Test {
  public static void main(String[] args) {
    int i = 10;
    System.out.println(i);

    final int k = 100;
    k = 200; //java: 无法为最终变量k分配值
	
    final int m;
    m = 200;
    m = 300; //一旦被final,只能一次性赋值
  }
}
public class Test {
  final int age; //这种变量,程序员必须手动赋值,不能系统默认赋值
  //第一种解决方案
  // final int age = 10;
  //第二种解决方案
  public Test(int age) {
    this.age = age;
  }
  public static void main(String[] args) {
  }
}
// 以上两种解决方案可以理解为同一种:都是给赋值

final修饰对象

public class Test {
  public static void main(String[] args) {

    //创建用户对象
    User u = new User(); //User u = 0x1234
    //创建新的用户对象
    //程序执行到此处表示 以上对象已经变成垃圾数据,等待垃圾回收器回收。
    u = new User(200); // u = 0x23456

    //创建用户对象
    final User user = new User();
    user = new User(50); //error: 一旦final 保存的对象指向某个对象。不能修改
  }
}

final修饰的引用虽然指向某个对象之后不能指向其它对象,但是所指向的对象内部的内存是可以被修改的。

    //创建用户对象
    final User user = new User(50);
    user.id = 30;
   

常量

class Chinese{
  
  //国籍
  //需求: 每一个中国人的国籍都是中国,而且国籍不会变,为防止国籍被改变,建议加final修饰。
  // final修饰的实例变量是不可改变的,这种变量往往和static联合使用,被称为 常量。
  //所有常量名大写,且每个单词间采用下划线连接
  static final String GUO_JI = "中国";

}

常量 PI的使用

public class Test {
  public static void main(String[] args) {
    System.out.println(Math.PI);
  }
}
class Math{
  static final double PI = 3.1415926;
}

小结

final修饰的东西就是不能改变。

你可能感兴趣的:(java入门,java,开发语言)