class Variable
{
int x;
Variable()
{
int x = 60;//这里打印结果,x =0 ,如果改成 x = 60,打印结果为60,为什么?最好能画图说明
System.out.println("haha");
}
}
class Test
{
public static void main(String[] args)
{
Variable v = new Variable();
System.out.println(v.x);
}
}
class Variable
{
int x;
Variable()
{
int x = 60;//对象一经创建,便执行此句
System.out.println("haha");
}
}
class Test
{
public static void main(String[] args)
{
Variable v = new Variable();//创建对象时,Java虚拟机会自动调用无参的构造方法
System.out.println(v.x);
}
}
你创建了两个x,注意变量的作用域
你创建了两个x,注意变量的作用域
class Variable
{
int x;
Variable()
{
x = 60;//这样写应该是没有问题的
System.out.println("haha");
}
}
class Test
{
public static void main(String[] args)
{
Variable v = new Variable();
System.out.println(v.x);
}
}
int x=60;相当于在内存中又开辟了一块空间,这块空间的值就是60,一个新的x变量指向了这块内存;而x=60,是任然用之前的那个引用变量,只不过让这个变量重新指向了一块内存空间。所以如果x=60,而这个x的变量是在类中定义的,那么x的值就在类中有效;而int x=60,只是在构造函数中定义的,构造函数结束了,它也就over了,所以类中的那个x还是没有变,任然是0