码迷,mamicode.com
首页 > 编程语言 > 详细

stactic final和final变量的初始化(in java)

时间:2015-04-16 21:31:22      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:

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

stactic final和final变量的初始化(in java)

标签:

原文地址:http://www.cnblogs.com/aby57/p/4433074.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!