A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘源 中级黑马   /  2012-8-3 09:31  /  1536 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘源 于 2012-8-3 21:06 编辑


问题已经解决”。



class Single
{

private  Single(){}
private static Single s = new Single();
public static  Single getInstance()
{
  return s;
}
}
这个是视频中的单例模式。   例子中的2个static都有什么作用啊,我不写可不可以啊。

3 个回复

倒序浏览
声明静态变量是为后面的静态方法服务的,之所以声明静态方法是因为调用方法是不用实例化对象的,例如 你调用第一个方法   就得Single a = new Single(); a.Single();

调用第二个就直接Single.getInstance();就行了
回复 使用道具 举报
本帖最后由 黑马-唐磊 于 2012-8-3 10:22 编辑

想必楼主还对单例设计模式没有弄清楚吧,使用单例模式可以确保某个类只会有一个实例被创建,不让类以外的任何事物创建对象的实例。非静态方法在创建实例对象时,因为属性的值对于每个对象都各不相同,因此在new一个实例时,会把这个实例属性在垃圾回收堆里拷贝一份,同时这个new出来的对象放在堆栈上,堆栈指针指向了刚才拷贝的那一份实例的内存地址上。而静态方法则不需要,因为静态方法里面的静态字段,就是保存在方法表里了,只有一份。因此静态方法和非静态方法,在调用速度上,静态方法速度一定会快点,因为非静态方法需要实例化,分配内存,但静态方法不用,但是这种速度上差异可以忽略不计,也就是静态的不需要被实例化,类一加载就存在了,所以最好得用上static
回复 使用道具 举报
本帖最后由 田向向 于 2012-8-3 10:13 编辑

单例模式:在内存中只存在一份。其实这个在毕老师的单例模式那一块讲的很清楚,你把视频多看几遍就明白了。

被static修饰的成员不用实例化,并且能被成员所共享,并且一旦载入该类就会永远在内存中,直到程序结束,也就是说,当你的方法销毁之后,它是不会再占用内存了,可以节约资源。
被static修饰的成员,还多了一个类名调用的调用方式方式,即:类名.静态成员

不知道这么说你明白没,,以前的帖子有很多关于这个的帖子,你要是还不明白,可以去搜一下,学习一下
论坛纵横搜索的地址:http://search.itheima.com/



我见你这几天发帖子很频繁,一个小时能发四五个,你这学习的态度值得表扬,,有些问题是多看几遍视频,多搜一下资料就可以解决的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马