下面我在创建第二个对象p1的时候,我并没有给其赋值,但为什么打印出的结果却是2,而不是默认的0?按理来讲,创建一个新对象和之前创建的对象没有关系才是,麻烦看哪里出了问题?
class Test
{
static int age;
public void getAge(int age)
{
this.age=age;
System.out.println("age="+age);
}
public int setAge()
{
return age;
}
}
public class FaDa
{
public static void main(String[] args)
{
Test p =new Test();
Test p1 =new Test();
p.getAge(2);
System.out.println(p1.setAge());
}
}作者: 李菁 时间: 2012-7-22 16:34
你把age设置成静态的了,所以你在给p赋值的时候,p1的值也随着p的值更改了,把static去掉就好了作者: 杨锦 时间: 2012-7-22 21:45
static int age;
这里为什么要加静态?作者: 刘海源 时间: 2012-7-22 22:04
class Test
{
static int age;
public void getAge(int age)
{
this.age=age;
System.out.println("age="+age);
}
public int setAge()
{
return age;
}
}
public class FaDa
{
public static void main(String[] args)
{
Test p =new Test();
Test p1 =new Test();
p.getAge(2);
System.out.println(p1.setAge());
}
}
//很好解释,因为 你将age定义为静态变量,而且也是Test的成员变量,
//成员变量都随着创建对象而创建,会在堆内存中初始化,但是age是静态变量
//存储在静态方法区中,不用对象调用只用类名就可以调用,和创建对象没关系了
//就是说它的权限大了,所以age值是2