弱弱的问个static的问题,求解释

losetowin 2013-04-05 11:19:37
我在声明static变量之后,是否需要立即初始化,如果不初始化的话,会出现怎么样的情况或者异常?还有一个小问题,如果我希望一个对象只实例化一次,之后变可以使这个对象在很多方法里使用,该怎么实现呢?用static可以,但是觉得不直接初始化不是很好。求解释

我的程序类似这种

private static Demo _demo;//这里没有进行初始化

public boolean login(){
_demo = getConnection();//这里进行初始化,
}


按照上面的代码,这样是否存在不合理之处呢?
...全文
264 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
失落夏天 2013-04-05
  • 打赏
  • 举报
回复
被static修饰过的对象一直会存在与内存之中,也就是说并不是用到采取加载的。速度比较快,但是也因为如此,所以被static修饰的建议是多个类都用到的。 static修饰的不用立即实例化,但是用之前必须实例化。如果不实例化报错空指针异常。当然,既然声明为静态的了,还是声明的同时实例化比较合适。。 后一个问题,一个对象在多个类中用,如果想等到需要用到才创建的话用单例模式中的懒汉模式,如果像一开始就创建的话就用单例模式中的懒汉模式。
yongger520 2013-04-05
  • 打赏
  • 举报
回复
单例模式可以满足你的需求
huangxiaofei 2013-04-05
  • 打赏
  • 举报
回复
static变量在定义的时候可以不用立即初始化,static的特点在于整个class的所有object在内存中只有一个变量copy存在。 后面说的那个,正是static的作用啊~
达达KZT 2013-04-05
  • 打赏
  • 举报
回复
valid25f 2013-04-05
  • 打赏
  • 举报
回复
在调用login前不要使用_demo.成员
t352541291 2013-04-05
  • 打赏
  • 举报
回复
/* 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; } } 希望对楼主有用!

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧