分享

静态块与非静态块的区别

 寂寞如故 2013-11-15
public class Test{

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Person p =new Person("lil",23);
System.out.println(p.id+" "+p.id1);
Person p1 =new Person("lili",23);
System.out.println(p1.id+" "+p1.id1);
Person p2 =new Person("lili",23);
System.out.println(p1.id+" "+p2.id1);
}

}


class Person {
private final String name;
private  int age;
public static int id=1;
public static int id1=1;
public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public String getName() {
return name;
}

public Person(String name,int age){
this.name = name;
this.age = age;
}
static {
id1++;
}
    {
id ++;
}
}

/////////////////////////////输出结果:
2 2
3 2
4 2

static{}(静态代码块)与{}(非静态代码块)的异同点 
相同点:都是在JVM加载类时且在构造方法执行之前执行,在类中都可以定义多个, 
    一般在代码块中对一些static变量进行赋值。 
不同点:静态代码块在非静态代码块之前执行(静态代码块—>非静态代码块—>构造方法)。 
    静态代码块只在第一次new执行一次,之后不再执行,而非静态代码块在每new 
    一次就执行一次。非静态代码块可在普通方法中定义(不过作用不大);而静态代码块不行

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多