final
- 什么是不变性
- final的作用
- 3种用法:修饰变量、方法、类
- 注意点
- 不变性和final的关系
类的不可变性,类中所有的属性都不可变。
class Person{
final int age;
final String name;
}
final的作用
- 类防止被集成、方法防止被重写、变量防止被修改
- 天生是线程安全的,而不需要考虑线程安全
final修饰变量
含义,被final修饰的变量,意味着值不能被修改,如果变量是对象,那么对象的引用不能变,但是对象自身的内容依然可以变化。
final修饰3种变量
- final instance variable
- final static variable
- final local variable
final修饰变量,三种变量的赋值时机。规定赋值时机的原因。
final修饰方法
final不能修饰构造方法。
final修饰普通方法表示该方法不能被重写。也不能存在相同的方法名
static方法也不能被重写,但是可以存在相同的方法名。
final修饰类
不可被继承
如果用final修饰对象,只是对象的引用不可变,而对象本身属性是可以变化的。final使用原则,良好的编程习惯。
不变性和final的关系
对于基本数据类型来说,一旦被final修饰后就具有不变性,但是对于对象类型,只有类中的每一个属性都不可变才具有不可变性。
把变量卸载线程内部–栈封闭
栈空间不会有线程安全问题
final修饰字符串问题
public static void main(String[] args){
String a = "wukong2";
final String b = "wukong";
String d = "wukong";
String c = b+2;
String e = d+2;
System.out.println(a==c);//true
System.out.println(a==e);//false
}