final修饰符的三种使用场景

final有三种使用场景,分别是修饰变量、方法和类,无论哪种修饰,一旦声明为final类型,你将不能改变这个引用了,编译器会检查代码,如果你试图再次初始化,编译器会报错。下面我来具体说说每一种修饰场景。
1、修饰变量
当final修饰一个变量的时候一般把他作为常量,通常和static关键字配合使用。例如:
private static final String ISSUCCESS_FLAG = “true”;一般static修饰的常量都用大写字母来表示。
在这里我写一段代码:

String str1 = "12";
final String str2 = "1";
String str3= "1";
boolean a=(str1==(str2+"2"));
boolean b=(str1==(str3+"2"));

这里a和b的值分别是什么?
显然a=true,b=false
此时str2+”2”其实就是”1”+”2”操作的是常量之间的连接操作,而str3+”2”其实是new String(“12”);他和str1是两个对象,内存地址不同
2、修饰方法
当一个方法被final修饰后,表示该方法不能被子类重写,final方法有一个好处是比非final方法要快,因为在编译时已经静态绑定了,不需要在运行时在动态绑定。
3、修饰类
当一个类被final修饰后,表示该类是完整的,不能被继承,例如Java中String、Integer类都是final类
final修饰的优点

  • final关键字提高了性能。JVM和Java应用都会缓存final变量。
  • final变量可以安全的在多线程环境下进行共享,而不需要额外的同步开销。
  • 使用final关键字,JVM会对方法、变量及类进行优化。
  • 不可变类创建不可变类要使用final关键字。不可变类是指它的对象一旦被创建了就不能被更改了。String是不可变类的代表。不可变类有很多好处,譬如它们的对象是只读的,可以在多线程环境下安全的共享,不用额外的同步开销等等。
  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值