静态块学习
小谈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) 收藏 举报
浙公网安备 33010602011771号