stactic final和final变量的初始化(in java)
1.static final(常量)
初始化可以有两种方法:
(1)在声明的时候初始化
static final i = 1;
你也可以将一个静态方法的返回值设置给它
static final int i = f(); static public int f(){ return 1; }
(2)在静态代码快中初始化(一般情况下,如果有些代码必须在项目启动的时候就执行的话,需要使用静态代码块,这种代码是主动执行的;一个类可以使用不包含在任何方法体中的静态代码块,当类被载入时,静态代码块被执行,且只被执行一次,静态块常用来执行类属性的初始化)
static{ i = 1; }
2. final
final修饰变量时,表示该变量值不能被改变;修饰方法时,表示该方法不能被子类重写覆盖(但是可以在同一个类中重载);修饰类时,表示该类不能被重载
final的初始化有三种方法,其中前两种和static final 一样,只是第二种的代码快去掉static即可,单纯写成{}
final初始化还有一种方法就是在构造函数中进行,如:
private final int t; public Test(){ //假设代码处于Test类中 t = 2; } public test(int i){ t = i }
修饰变量时,final与static final的区别是:final只属于该类特定的对象,而static final则属于类,独立于具体对象。
大家注意到,如果有多个构造函数,每个都要进行初始化final变量,否则无法通过。
这里说一下为什么可以这样呢?因为final不是静态变量,而是属于某个特定类的不可更改变量,而对象的创建必须要通过构造函数,所以,只要我们在每个构造函数中都初始化final变量,就可以确保final变量被初始化成功并且不会被多次初始化。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。