final关键字修饰的内容不可改变。可以用于修饰类、方法和变量。
使用
类
final class 类名 { }
1)该类不能有任何子类
2)该类所有成员方法不能进行覆盖重写
方法
修饰符 final 返回值类型 方法名(参数列表){
//方法体
}
1)该方法不能被覆盖重写
局部变量
基本类型
final int a; //right
a=1;//right
a=2;//wrong
final修饰的局部变量只能赋值一次,变量中数据不可改变
引用类型
final User u = new User(); // 创建 另一个 User对象
u = new User(); // 报错,指向了新的对象,地址值改变。
final修饰后的引用变量只能指向一个对象,地址不能再更改。
不影响对象内部的成员变量值的修改
成员变量
使用final关键字修饰,变量依然不可变
变量初始化
显示初始化:
public class User {
final String USERNAME = "张三";
private int age;
}
构造方法初始化:
public class User {
final String USERNAME ;
private int age;
public User(String username, int age) {
this.USERNAME = username;
this.age = age;
}
}
注意:
1)成员变量具有默认值,使用final之后必须手动赋值
2)被final修饰的常量名称,一般都有书写规范,所有字母都大写
3)两种初始化只能选一个