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
            11. 第三个为什么是0,assign1()方法使用完应该有使x为2,为什么x会变0,它要清除堆栈也要运行x=2
2.  一开始的 int x 到底有没有分配空间,是不是只要是变量都会分配一块固定的空间,还是 需要 产生一个对象才能分配一块空间?

解决方案 »

  1.   

    结果正常问题是是 你把 局部变量 x 与成员变量弄混了public void assign1()
       {
          x=2;  //这样才是对成员x赋值
       }x 肯定肯定分配空间了不然 你为什么会打印出0呢 默认就是0局部变量与成员变量不要重名 很难调试呢
      

  2.   

    1、这个assign1()只是产生了一个零时变量x,没有对成员变量产生影响
    2、分配了,但是因为这个是简单类型,如果是Integer x的话应该只是创建了一个引用