当前位置: 代码迷 >> J2SE >> 静态代码块中创设类的对象对类属性的改变
  详细解决方案

静态代码块中创设类的对象对类属性的改变

热度:52   发布时间:2016-04-23 19:35:50.0
静态代码块中创建类的对象对类属性的改变
先看一下代码
class Person 
{
private static int age;
private String name;

static{
age = 2;                       //把该类的默认年龄改为2
new Person(6);         //创建一个新的对象并且传入年龄参数6
}

Person(){
System.out.println("A:age="+age+",name="+name);
}

Person(int age){
this.age = age;
System.out.println("B:age="+age+",name="+name);
}
}

class PersonDemo
{
public static void main(String[] args){
Person p1 = new Person();
        }
}


输出结果:
B:age=6,name=null
A:age=6,name=null

疑问,为什么第二次输出的age是6呢,静态代码块中的newPerson(6)只是创建了一个对象,为什么会对主函数中新创建的对象p1的age产生改变呢,默认值为什么不是2呢?
------解决思路----------------------
static变量属于这个类的静态变量,任何实例对象修改这个变量值都会改变所有实例对象中的值
  相关解决方案