Java中的final和static

final

  final可以用在类、方法、变量上。 

  •      1、final用在类上,表明当前类它不能被继承,没有子类。 
  •      2、final用在方法上,表明当前方法不能被override,不能被重写。 
  •      3、final用在变量上,表明当前变量是一个终态的变量,是一个常量,这个变量的值一但被赋值后就不能被改变了。 

     对于final类型的成员变量的初始化方式: 

  •    1、声明变量时直接赋值 
  •      2、在构造方法中完成赋值,如果一个类有多个构造方法,就要保证在每个构造方法中都要完成对该final类型变量的初始化工作。//大概是因为构造方法总是会执行。

static

  用static主要作用是在类刚加载时就初始化该量的值并给他分配一块共用的内存块存储他的值。e.g.对于一个int类型的static final类型的变量a来说,我们只能在声明的时候就给它赋值private static final int a = 3;。

  Java里面static一般用来修饰成员变量或函数。但有一种特殊用法是用static修饰内部类,普通类是不允许声明为静态的,只有内部类才可以。被static修饰的内部类可以直接作为一个普通类来使用,而不需实例一个外部类。

 

引用百度知道上的一段回答:

static意思是静态的。方法前加上static叫做静态方法,类前加上static叫做静态类。静态方法必须存在于静态类中,但静态类中的方法可以不都是静态方法。使用静态方法时,直接用类名+“.”+方法名。不用再实例化,创建类的对象,达到方法调用方便,节省空间!

 这也许是为什么main函数必须是static类型的缘故——不需要实例化了。

 

对象的初始化顺序:首先执行父类静态的内容,父类静态的内容执行完毕后,接着去执行子类的静态的内容,当子类的静态内容执行完毕之后,再去看父类有没有非静态代码块,如果有就执行父类的非静态代码块,父类的非静态代码块执行完毕,接着执行父类的构造方法;父类的构造方法执行完毕之后,它接着去看子类有没有非静态代码块,如果有就执行子类的非静态代码块。子类的非静态代码块执行完毕再去执行子类的构造方法。总之一句话,静态代码块内容先执行,接着执行父类非静态代码块和构造方法,然后执行子类非静态代码块和构造方法。

Reference:

http://jmhmlu.blog.163.com/blog/static/1616122982011411462640/

http://zhidao.baidu.com/link?url=QX2kQKUzA1LZH8Vz4V4P1_lOFKGQ_FvtDV0KFCSFSARBsyspAY-uM6GlbfvORhGRFMW6MoZ5O88CXrcgVcJaw_

So much for this.

June 10th. 2014

posted @ 2014-06-10 10:01  LarryLawrence  阅读(356)  评论(0编辑  收藏  举报