final关键字可以修饰类、变量(局部变量/全局变量) 、方法
final修饰类:不能被继承 ,通常项目中一些核心类 不能被继承;JDK中String类是final的
final修饰方法:不能被重写。
final修饰的变量:不能被修改,包括不能修改存储值和引用地址。
final修饰的是全局变量,一定要初始化
public static void main(String[] args) {
final int i = 3;
i = 3; //错误的
final Person p = new Person();
p = null; //错误
p = new Person(); //错误
p.name = "a"; //正确的
p.name = "b"; //正确
}
public void test(final int i) {
i = 3; //错误
}
final修饰的属性,初始化:
public class Person extends Animal{
String name;
final int age ;//先定义
public Person() {
age = 20; //后赋值
}
public Person(String name) {
age = 30;
}
}
或
public class Person extends Animal{
String name;
final int age = 20;//定义并赋值,不能被修改
public Person() {
}
public Person(String name) {
}
}
或
public class Person extends Animal{
String name;
final int age ; //先定义
{
age = 20; //在游离块中赋值
}
public Person() {
}
public Person(String name) {
}
}
在类中的属性如果是常量, 用public static final修饰
//常量类
public class Constant {
public static final String IP = "192.168.1.1";
public static final int PORT = 80;
public static final double PI = 3.1415926;
}