在使用JAVA SWING编程
    public static void main(String args[]) {        int status = 0;
        Data s ;
        DataHolder t ;其中Datahe和 DataHolder都是类。 为什么我编译的时候总是显示S T没有初始化呢?
variable s t might not have been initialized我用的是netbeans,如果是它自动修改的,就会改成
    public static void main(String args[]) {        int status = 0;
        Data s = null;
        DataHolder t = null;
这下倒是不显示没有初始化了,但是程序执行结果不对。如果我人工赋值。data dataholder里 只有int值。 如果我分别给s.data1等值都赋值后。还是显示没有初始化。太奇怪了。

解决方案 »

  1.   

    真不知道楼主想说什么,总之,类都是new  出来的。完了。
      

  2.   

    楼主代码帖全一点然后所有的变量都是引用,要指向一个对象才能用,你没有赋值所以编译错误了。另外,你既然赋值为null肯定调用对象的方法就 NullPointer了
      

  3.   

    局部变量必须初始化才能使用!
    成员变量java会自动初始化.
      

  4.   

     int status = 0;
      Data s ;
      DataHolder t ;
    s = new Date();
    t = new DatasHoldr();
     
    然后再进行赋值。
     你不new, 对象根本不存在, 所以不能赋值。
      

  5.   

    这和swing没有关系。编译器对于全局的变量,可以在直接初始化,或者在构造函数中初始化。
    所以如果全局变量这么写没有问题。
    但是在方法内部,局部变量就必须要求初始化。因为使用局部变量的时候初始化的地方只有这个方法内。
    所以必须要求初始化。
      

  6.   

    java处处是指针,所有的对象都需要new出来来初始化,如果需要,把地址赋值给一个引用,而完成一个"变量"的初始化
    DataHolder t ;是生命了一个DataHolder型的引用变量,而你需要的是类似于
    DataHolder t = new DataHolder()来使t指向一个DataHolder对象,否则t无法使用
    除非是基本类型比如说int,boolean之类的,他们无须这样做
      

  7.   

    道上混的应该知道道上的规矩
    如果是全局变量即在类中定义的变量 系统会自动复制 int double 等等类型的变量会自动赋值为0 例如全局变量 int a;编译后自动成为 int a = 0;boolean类型的变量的默认赋值是false 某个类的类型的变量的默认值是null
    如果是局部变量 即在方法中定义的变量 必须要手动的为其赋值 因为局部变量的使用范围就是这个方法内 由于使用的范围有限 所以系统没必要费那么大的周折为其赋值 成本太高 
    还有个规矩
    类的实例化必须要用new来实现 或者是Class类中的newInstance()方法实例化 入 A a = new A();此时的a才有实际效用  就像为还没有出世的小孩起名字一样 在肚子里的孩子你叫破了嗓子也没用  这个名字只能说明孩子生下来以后才有用
      

  8.   

     你不new, 对象根本不存在, 所以不能赋值。
      

  9.   

    局部变量必须初始化才能使用!
    成员变量java会自动初始化.
      

  10.   

    100个项目中能有2个用到SWING就不错了
      

  11.   

    要New啊  九楼的例子举得太有意思了
      

  12.   

    “类的实例化必须要用new来实现 或者是Class类中的newInstance()方法实例化 入 A a = new A();此时的a才有实际效用 就像为还没有出世的小孩起名字一样 在肚子里的孩子你叫破了嗓子也没用 这个名字只能说明孩子生下来以后才有用”
    很形象
      

  13.   

    Data s ;
    DataHolder t;
    这是生命了对象变量,也就是说,虽然在内存中分配了空间,在内存他们并没有任何引用。楼上有人说对象都是new出来的,意识是说。在内存中分配了空间,并正确以用了。这样才可以正确使用。
      

  14.   

    要这样声明:  Data s = new Data(); || Data s = null;
    DataHolder t = new DataHolder(); || DataHolder  t = null;如果你不这样写的话,编译就会报错的