我在声明static变量之后,是否需要立即初始化,如果不初始化的话,会出现怎么样的情况或者异常?还有一个小问题,如果我希望一个对象只实例化一次,之后变可以使这个对象在很多方法里使用,该怎么实现呢?用static可以,但是觉得不直接初始化不是很好。求解释我的程序类似这种private static Demo _demo;//这里没有进行初始化public boolean login(){
    _demo = getConnection();//这里进行初始化,
}
按照上面的代码,这样是否存在不合理之处呢?
javastatic

解决方案 »

  1.   

    static变量在定义的时候可以不用立即初始化,static的特点在于整个class的所有object在内存中只有一个变量copy存在。
    后面说的那个,正是static的作用啊~
      

  2.   

    被static修饰过的对象一直会存在与内存之中,也就是说并不是用到采取加载的。速度比较快,但是也因为如此,所以被static修饰的建议是多个类都用到的。
    static修饰的不用立即实例化,但是用之前必须实例化。如果不实例化报错空指针异常。当然,既然声明为静态的了,还是声明的同时实例化比较合适。。
    后一个问题,一个对象在多个类中用,如果想等到需要用到才创建的话用单例模式中的懒汉模式,如果像一开始就创建的话就用单例模式中的懒汉模式。
      

  3.   

    /*
    1.static修饰的变量不一定创建就要初始化,等你在后面用到这个变量时再初始化也行,但不建议这样做。因为被static修饰的成员变量是被所有的对象所共享的,所以建议创建静态变量的时候就直接初始化。
    2.要让一个对象只实例化一次,之后便可以使这个对象在很多方法里使用的话。那么可以使用单例设计模式。
      先解释下单例模式解决的问题:保证了一个类在内存中只有一个对象。
      如何做到呢?
      (1).要不想其他类创建该类对象的话,那么将构造函数私有化即可。
      (2).在自己类中创建一个对象并将其私有化。
      (3).对象创建了是给其他类使用的,那么在该类中提供一个方法供其他类使用。
     单例设计模式分为2种,可以形象的称之为饿汉式和懒汉式
       饿汉式:先创建对象
       懒汉式:先不创建对象,进行判定,需要用时才创建对象。
     下面来代码示例下吧:
    *///----------------------------------------------------------------//饿汉式
    class Single
    {
    private stetic Single s = new Single();//创建对象
    private Single(){}//将构造函数私有化,防止其他类创建该类对象
    public static Single/*返回值类型为类类型*/ getInstance()//提供一个方法供其他类使用
    {
    return s;
    }
    }//懒汉式
    class Single2
    {
    private stetic Single2 s = null;//先不创建对象
    private Single(){}//将构造函数私有化,防止其他类创建该类对象
    public static Single2 getInstance2()//提供一个方法供其他类使用
    {
    //进行判断,需要用时才创建对象
    if(s == null)
    s = new SIngle2();
    else
    return s;
    }
    }希望对楼主有用!
      

  4.   

    在调用login前不要使用_demo.成员