java 关键字 final

final是什么?
final 是一个修饰符。
 
final使用场景?(即如何使用)
final 变量、方法、类
 
final修饰类
该类是最终类,不能被继承,例如jdk包的String、System,final类中的所有成员方法都会被隐式地指定为final方法
 
final修饰方法
该方法不能被子类覆盖(重写),类的private方法会隐式地指定为final方法
 
final修饰变量(成员变量、局部变量)
修饰成员变量时,必须在定义时或构造函数中进行初始化赋值,且一旦被赋值后,不能再被赋值了;
修饰局部变量,只需保证在使用之前被初始化赋值即可。
变量为基本数据类型时,则其值一旦在初始化后便不能修改,若为引用类型,则其初始化后不能再指向其它对象,但其值可以变化。
 
final关键字的好处?
使用final关键字,JVM会对方法、变量及类进行优化。
final关键字提高了性能。JVM和Java应用都会缓存final变量。
 
final修饰的变量和普通变量的区别?
当final修饰的变量是基本数据或者String类型时,如果在编译期间能知道它的值,则编译器会把它当做编译期常量使用,即相当于直接访问这个常量,不需在运行时确定。代码如下:
 
public class Test{
  public static void main(String[] args){
    final String str = "hello";
    String m = "hello";
    String n = "hello2";
    String a = str +2;
    String b = m +2;
    System.err.println(n==a);
    System.err.println(n==b);
 }
}
输出: ture  false 
 
final、static、static final修饰的字段赋值的区别?
(1)final修饰的变量在运行时被初始化(可直接赋值,也可在构造器中赋值),只能被赋值一次,不能修改。
(2)static修饰的变量在类加载过程中的准备阶段被初始化为0或null,而后在初始化阶段(触发构造器)才会被赋予代码中设定的值。若没有,则为默认值。
(3)static final修饰的变量 在Javac时生成ConstantValue属性,在类加载的准备阶段根据 ConstantValue的值为该字段赋值,它没有默认 值,必须显式地赋值,否则Javac时会报错。 可以理解为在编译期即把结果放入了常量池中。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值