final关键字用于修饰不可改变的内容,可以用于修饰类、方法、变量(包括成员变量和局部变量)
被final修饰的类,不能被继承
public final class Test {} // 修饰类
被final修饰的方法,不能被重写
public final void aa(){} // 修饰方法
被final修饰的变量,不能被重新赋值
public final int num=0;// 修饰变量
**局部变量——引用类型:**引用类型的局部变量被final修饰后,只能指向一个对象,地址不能改变。但是不影响内部成员变量值的修改。
public class Test{
public static void main(String[] args) {
// 创建User对象
final User user = new User("小明");
user = new User();// 报错 指向了另一个User对象,地址改变
user.setUsername("小白");// 调用set方法对username进行修改,不报错,可以修改
}
}
**成员变量:**成员变量涉及到初始化的问题,初始化的方式有两种,只能二选一
显示初始化
class User1{
final String username = "小白" ;
}
构造方法初始化
class User1{
private final String USERNAME ;
User1(String username){
this.USERNAME = username ;
}
}
被final修饰的常量名称,一般都有书写规范,所有字母都大写