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变量被初始化成功并且不会被多次初始化。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。