第一个程序:
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>
答案 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
}