静态块学习

小谈java中的静态块,非静态块

 

      java中经常有一些静态块,这是用来在生成类之前进行的初始化,无论java还C++中的static,都是最先初始化好的。

所以注意:

a在静态方法里只能直接调用同类中其他的静态成员(包括变量和方法),而不能直接访问类中的非静态成员。这是因为,对于非静态的方法和变量,需要先创建类的实例对象后才可使用,而静态方法在使用前不用创建任何对象。

b 静态方法不能以任何方式引用this和super关键字,因为静态方法在使用前不用创建任何实例对象,当静态方法调用时,this所引用的对象根本没有产生,

至于非静态块是存在每一个类中,除了带有static块以外,它最先执行,(在构造函数前)下面是一个例子。

 

public class text {
 public int a;
 {
  System.out.println("非静态2");
 }
 static{
   System.out .println("static");
 }
 text(){
  System.out.println("text");
 }
}
public class text1 extends text{
public int t;
public double w;
{
 System.out.println("非静态块");
}
static {
 System.out.println("static1");
}
public text1(){
 System.out.println("text1");
}
public static void main(String args[]){
 text1 te=new text1();
}
}
结果是:

static
static1
非静态2
text
非静态块
text1
非静态块比构造函数更早调用。

posted on 2012-07-02 22:43  elegantyuanjian  阅读(140)  评论(0)    收藏  举报

导航