在范围,寿命方面有什么不同吗?

时间:2014-07-17 03:11:21

标签: java reference scope lifetime

第一个程序:

class Demo  {
   public static void main(String args[])  {
      Object obj ;
      while(true)  {
         obj = new Object();
      }
   }
}

第二节目:

class Demo  {
   public static void main(String args[])  {
      Object obj = null;
      while(true)  {
         obj = new Object();
      }
   }
}

问题:两个程序中obj的范围是否存在差异,其中obj在循环中被赋值(在第一个程序中)并且obj最初被赋予空值(在第二个程序中)。 / p>

1 个答案:

答案 0 :(得分:1)

在这两种情况下,obj的范围都是主方法的结尾。由于while(true)条件,两个程序都将无限运行。

然而,在第一种情况下,尝试在循环外使用obj将导致编译错误,因为它未初始化(假设while循环在某个时刻终止)

public static void main(String []args){
        Object obj;
        while(args != null)  {
             obj = new Object();
        }
       System.out.println(obj); //compilation error
}