例如:Object o1 = null;与Object o2;有什么区别吗;为什么第二种写法eclipse会标有warning?而加上 = null 就没有waring了

解决方案 »

  1.   

    没有赋值或者没有被引用被eclipse认为是多余的代码,never be used
      

  2.   

    两个没有区别吧,因为如果你不new出来实例的话,运行的时候,上面两种方式都会显示出一个空指针异常
      

  3.   


    第二种会warning是没有赋值,下面引用后可能会报空指针或者其它异常,
    而第一种 = null 和 直接赋值,情况是一样的。编译认为你赋值了,所以不warning。
      

  4.   


    String s = null;
    String s1 = null;
    System.out.println(s == s1);
    结果true说明了其实他们指向的是同一片内存区域,所以s跟s1都是赋值了null这个对象。
    当然其实你如果是对象的field的话赋值与不赋值都无所谓的,在初始化对象的时候都会赋值为null的。如果是在方法体内,如果写成String s;而后面没有赋值的话,编译会报错的。
      

  5.   


    第一种是给变量赋予了一个引用只不过它是null的,而第二种只是声明了一个变量。所以会有warning.
      

  6.   

    直接加分后的只是一个声明,在内存空间里面仅仅就一个地址,没有任何的指向。如果后面加null的话,就是说明这个对象是空的。打个比如吧:前者相当于int i,只是简单的声明了i这个变量,这个变量的类型是int类型的; 而后者就相当于int i=0,声明了变量i,这个变量的类型是int类型,并且还给他赋值了,值是0;