Java final 和 static 关键字

final 关键字

在Java 中,final 是有 “最后的,不再可变” 的意思,主要的作用有:

  1. 修饰数据(局部变量或者成员变量),该变量只能被赋值一次且它的值无法被改变。对于成员变量来讲,我们必须在声明时或者构造方法中对它赋值;
  2. 修饰方法的参数,表示在变量的生命周期内不能被修改;
  3. 修饰方法,被 final 修饰的方法不能被重写(注:类的private方法会隐式地被指定为final方法);
  4. 修饰类,被 final 修饰的类不能被继承(一般不建议使用);
常与之对比的有:
1. finally 在 异常处理 try-catch-finally 中,无论 try 的过程中是否出现异常,都会执行 finally 中的代码。
2. finalize 方法,Java允许对象在 垃圾收集器GC 将对象从内存中清除之前使用 finalize() 方法进行一些操作。这是该对象最后一次执行的机会,对象可以在该方法中将自己作为其他变量的引用从而获得生存机会,但只能进行一次因为 finally() 一个对象只会调用一次,但一般不会这么处理。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在object类中定义的,因此所有的类都继承了该方法。

static 关键字

  1. static用来修饰成员变量,将其变为类的成员,从而实现所有对象对于该成员的共享;
  2. static用来修饰成员方法,将其变为类方法,可以直接使用“类名.方法名”的方式调用,常用于工具类;
  3. static静态块用法,将多个类成员放在一起初始化,使得程序更加规整,其中理解对象的初始化过程非常关键;
  4. static 静态导包用法,将类的方法直接导入到当前类中,从而直接使用“方法名”即可调用类方法,更加方便,如
 import static com.dotgua.study.PrintHelper.*;
当class文件被加载进内存,开始初始化的时候,被static修饰的变量或者方法即被分配了内存,而其他变量是在对象被创建后,才被分配了内存的。

在Java加载机制中,子类和父类加载顺序为:

  1. 父类的 static 修饰的静态字段或者静态语句块

  2. 子类的 static 修饰的静态字段或静态语句块

  3. 父类普通变量以及语句块

  4. 父类构造方法被加载

  5. 子类变量或者语句块被加载

  6. 子类构造方法被加载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值