final可以修饰变量,方法,类。
-
final修饰变量这个变量不可变。这个不可变是引用不可变,对象内部可以修改。
public static void main(String[] args) { final Person p = new Person(); p.setName("123"); p.setId(1L); System.out.println(p); }
-
final修饰方法,不可以修饰构造方法。修饰普通方法,不可以被子类重写
-
final修饰类,那么类不能被继承。典型的String类
-
final修饰String,若直接赋值字符串,会直接放入常量池.
String s1 = "aaa"; final String s2 = "aa"; System.out.println(s1 == s2+"a");//true
-
final赋值时机
(1)直接赋值 (2)static{}代码块 (3)构造方法