我在if或者try中声明的变量是不是离开大括号就会自动无效,不用我手动=null了吧?如果是一个方法内声明的变量呢? 是不是如果我不把变量=null,垃圾回收时就不会去把那些东西收走? 这东西真晦涩.... 谢谢大伙

解决方案 »

  1.   

    变量有作用域的!在if内声明的变量,在离开if括号后就无效了。如果在方法内声明的变量,在方法体结束后就无效了。你不手动设为null,垃圾器会回收的。
      

  2.   

    个人总结为 变量作用域在第一次赋值的两个{} 之间
    比如
    int i;
    {
    i=0
    }
    或者
    {
    int i;
    i=0;
    }这个i就在作用域都在{}里面不知道我说的对不
      

  3.   

    YES。
    可简单理解为该变量所出现的最近一对{}的范围
      

  4.   

    这是变量作用域的问题。if(...)
    {
        int n;
        ...    n = ...  // n有效。
    }            //if作用域完成,则n不再有效。
    至少内存嘛~~Java是自动释放内存的,所以这种变量是不用我们手动释放内存的。
      

  5.   

    不可能手动=null啊....{
    Object o=new Object();
    }
    o=null;//??undefined symbol:o,未定义变量o
      

  6.   

    1. 出来了就没有了(垃圾回收时会处理)
    2. 可以手动处理=null(这样可以使垃圾回收优先处理)