关于变量的实例域问题
public class Test
{
int x;
public static void main (String[] args)
{
int x=1;
System.out.println(x);
Test test=new Test();
System.out.println(test.x);
test.assign1();
//assign1使用完应该有使x为2,为什么x会变0,它要清除堆栈也要运行x=2
System.out.println(test.x);
test.assign2();
System.out.println(test.x);
System.out.println(x);
}
public void assign1()
{
int x=2;
}
public void assign2()
{
x=3;
}
}
运行结果: 1
0
0
3
1
1. 第三个为什么是0,assign1()方法使用完应该有使x为2,为什么x会变0,它要清除堆栈也要运行x=2
2. 一开始的 int x 到底有没有分配空间,是不是只要是变量都会分配一块固定的空间,还是 需要 产生一个对象才能分配一块空间?
------解决方案--------------------结果正常
问题是是 你把 局部变量 x 与成员变量弄混了
public void assign1()
{
x=2; //这样才是对成员x赋值
}
x 肯定肯定分配空间了
不然 你为什么会打印出0呢 默认就是0
局部变量与成员变量不要重名 很难调试呢
------解决方案--------------------1、这个assign1()只是产生了一个零时变量x,没有对成员变量产生影响
2、分配了,但是因为这个是简单类型,如果是Integer x的话应该只是创建了一个引用