Java中final关键字的作用

  1. final修饰基本类型常量,不可以第二次赋值;修饰引用类型常量,不可以第二次修改指向(但是不能保证引用类型的值不被修改)
final int[] a = {1, 2, 3, 4};
a[0] = 6; //可以修改
int[] b = {0};
a = b; //错误
  1. final修饰的类不可以被继承,需要注意:final类中所有的成员方法都会隐式的定义为final方法。
final class A {
}
class B extends A { //错误,不能被继承。
}
  1. final修饰的方法不可以被重写,例如:Object类中的getClass( )方法。
  • final方法比非final方法要快,因为在编译的时候已经静态绑定了,不需要在运行时再动态绑定。
class A {
	public final void print() {
	System.out.println("A");
	}
}

class B extends A {
	public void print() { //错误,不能被重写。
	System.out.println("B");
	}
}
  1. final保障多线程下线程的可见性,防止指令重排序
  • 在多线程运行环境中,如果一个对象在初始化期间有可能被其他线程访问,那么它就是不安全的,final关键字防止了指令重排,保证对象创建完成之后才会被其他线程调用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值