先看一下代码
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变量属于这个类的静态变量,任何实例对象修改这个变量值都会改变所有实例对象中的值