final关键字
final关键字
final可修饰属性、方法、类、局部变量(方法中的变量)。
final修饰的属性的初始化可以在编译器也可以在运行期,但初始化后不可改变,表明是一个常量。
final修饰的方法不能被重写,final修饰的类,那么这个类的所有方法都不能被重写,且被修饰的类不可被继承(如String类被final修饰后不可被继承)
final修饰String 类:
点击查看代码
public final class String implements java.io.Serializable, Comparable<String>, CharSequence {
xxx;
}
static final 共同修饰某个属性或方法
很多时候 final会和static组合使用,比如在hashMap源码中,几个重要参数都使用了 static final只能用来修饰变量、方法、内部类,表明占据一段不能改变的存储空间,只有一份,共享属性
static final 修饰成员变量:该变量是属于类的变量,且在类加载的时候就初始化好了,并且只能赋值一次,运行期间不可修改;
static final 修饰方法: 属于类的方法,且不可被重写
static final 修饰内部类: 属于外部类,且不能被继承
点击查看代码
static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; //默认初始化容量
static final int MAXIMUM_CAPACITY = 1 << 30; // 最大容量
static final float DEFAULT_LOAD_FACTOR = 0.75f; //负载因子
static final int TREEIFY_THRESHOLD = 8; //链表树化阈值
static final int UNTREEIFY_THRESHOLD = 6; //取消树化阈值
static final int MIN_TREEIFY_CAPACITY = 64; //最小树化容量
P.S. final 是可以直接修饰类的,比如 String类就是由fianl修饰的,这点要和static区分开