被final修饰的类是不可以继承(extends)的,例如java.lang.String
当类被继承时,被final修饰的方法不能被重写(override)。
final类中的方法都会被隐式的指定被final修饰
一个类的private方法会隐式的被指定为final方法
当被修饰的方法是热点代码(调用次数过多),把方法内部调用的其它方法的逻辑,嵌入到自身的方法中去,变成自身的一部分,之后不再调用该方法,减少栈桢压栈出栈
例如:
final public void test() {
while (true) {
// 调用次数过多,变成了热点代码
print();
}
}
public void print(){
System.out.println("hello world");
}
内联之后:
final public void test() {
while (true) {
System.out.println("hello world");
}
}
用private、static、final修饰的方法可直接内联,不会被子类继承和覆盖。
内联常常被作为程序优化的一部分,前提是热点代码的方法体不能太大,否则无法进行内联。