socket soc=null,这个只是java变量的赋值方式。
倘若你不做这一步,而用socket soc;你的函数调用如果返回soc的话,会直接告诉你没有初始化,编译期报错
本质而言,他们是一样的。都是null,soc这个引用没有指向任何有意义的对象

解决方案 »

  1.   

    1: socket soc; //声明一个socket对象soc
    2: soc = null; //初始化这个soc
    3: ....引用soc第1步你只是告诉程序有这个一个socket对象叫soc
    弟2步你把他初始化(这是一个必做的工作,或者叫做把soc实例化成一个null实例)
         当然,这里你也可以soc = new Socket(...);
    第3步你对他进行引用形象一些说:
    1: 你的老婆(假设她就是你的程序)要做饭了(要执行了),你告诉她你们家有一袋米
    2: 你告诉你的老婆你们家的米在哪里
    3: 你的老婆找到了你的米
    如果你省略了第2步,那么你的老婆在第三步就找不到米,当然,饭也就没的吃了。这个时候她就会告诉你,猪头,我们家的米在哪里?(于是你的老婆抛出了一个异常给你,叫做被引用的对象未被初始化)之所以要用socket soc = null;是一种习惯,以防止你在后面的程序因为内部或外部的原因造成未给soc初始化或者实例化而造成错误.
    当然如果你这样写 Socket soc = new Socket("192.168.0.155",21);
    当然你可以省略soc = null; = null只是在你不想对soc 进行实例化的时候完成一个并不占用什么资源的复值(这个可比new Socket()省了不少资源哦).
      

  2.   

    1、如果你程序以后需要对Socket soc判断,而且是局部变量,那最好在定义好后赋值为null)。
    如果Socket soc是方法中的变量,就可以不要写,也不建议写。
    2、panel3.add(button3, null),第二个参数表示将button3加到指定的layout,如果为null,相当于没有使用layout,在java里是不建议的。