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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1.饿汉式和懒汉式傻傻分不清楚。
2.那三个步骤中的private static 也有点看不懂。。。
不知道为什么加private私有,为什么加static 静态。。。

我是不是不适合学习JAVA???

评分

参与人数 1技术分 +1 收起 理由
付江涛 + 1 今天很残酷,明天更残酷,后天很美好,但大.

查看全部评分

27 个回复

正序浏览
记不住  就拼命记住为止!
回复 使用道具 举报
我晕,这次刚开始嘛!这么快就否定自己了?
回复 使用道具 举报
懒汉式是因为刚开始的时候需要判断才会去建立这个对象,所以有点慢,至于加私有呢,那是因为要控制其他的类建立这个类的对象,所以需要私有化这个类的构造函数
回复 使用道具 举报
static修饰的在类加载时初始化,只初始化一次
回复 使用道具 举报
不要急不要急,稍微往后面学一点再看这一点就懂了。
回复 使用道具 举报
单例设计模式 就是保证该类在程序中只能存在一个对象,所以不能让别人实例化该类,所以要私有化(private)该类的构造函数,但是你要为别人提供一个该类的唯一对象,所以你要在该类中定义一个静态的方法返回本类对象。

饿汉呢就好比一个人非常饿迫不及待的上来就在本类中new了一个对象并返回,懒汉正好想反,什么时候饿了(在被调用时)才创建该对象并返回,也就是延迟加载。
    这是我对单例的理解希望对你有用
回复 使用道具 举报
  1. 单例模式用于保证在程序的运行期间某个类有且仅有一个实例。
  2. 饿汉式:
  3. class  SingleClass{
  4.        
  5.          //将构造函数私有化,不允许在类的外部创建该类的实例
  6.         private SingleClass(){}
  7.         /*创建该类的实例,并将其私有化,
  8.         *该实例 需要在方法调用,因此也必须是静态的
  9.         *对象一创建,就进行初始化,这种叫做饿汉式
  10. */
  11.         private static SingleClass singleInstance = new SingleClass();
  12.         /*对外提供方法来获取该类的实例,该方法必须通过public修饰
  13.         *该方法只能被类名调用,因此,方法必须是静态的
  14.         *调用该方法是为了获取该类的实例,因此,该方法的返回值类型是该类类型*/
  15.         public static SingleClass getInstance(){
  16.                 return singleInstance;
  17.         }
  18. }
  19.        
  20. 懒汉式
  21.        
  22. class  SingleClass{

  23.         private SingleClass(){}
  24.        
  25.         private static SingleClass  singleInstance  =null;
  26.        
  27.         public static SingleClass getInstance(){
  28.        
  29.                 /*如果对象为null,才创建*/
  30.                 if (singleInstance == null)
  31.                         singleInstance = new SingleClass();
  32.                
  33.                 return singleInstance;

  34.         }
  35. }


  36. 懒汉式的线程安全问题
  37. public static SingleClass getInstance(){
  38. //这里会牵涉到线程安全问题,在保证同步的情况下注重效率
  39.                 //在此处判断一次,若已经创建实例,就不在判断锁,稍微提高效率
  40.                 if(singleInstance ==null) {
  41.                         //此处加锁,保证只有一个线程创建实例
  42.                         synchronized(SingleClass.class){
  43.                                 if (singleInstance == null)
  44.                                         singleInstance = new SingleClass();
  45.                         }
  46.                 }
  47.                 return singleInstance;
  48. }
复制代码
回复 使用道具 举报
单例模式都是将构造函数私有化,只对外提供一个获取对象的方法。private起到禁止其它程序创建该对象的作用。static修饰的最先加载,先初始化。
回复 使用道具 举报
有些时候不要钻牛角尖,你可以学习后面的视频,后面的视频看完一遍,前面的有些知识点不懂的,后面视频看完之后,有些知识点自然而然就懂了,太过于抓住一个知识点不放,你的学习方式不对:L
回复 使用道具 举报
没什么难的对看看基础的是频加油
回复 使用道具 举报
不要气馁 相信自己
回复 使用道具 举报
加油吧,有时候坚持才是最可贵的。
回复 使用道具 举报
刚开始都是这样,我也一样,但是只要继续学下去有了积淀和感觉,这些就很容易懂了
回复 使用道具 举报
哈哈 我们的进度差不多嘛,有可能会成为同期哦,加油吧
回复 使用道具 举报
饿 懒 好像说的单例模式
回复 使用道具 举报
楼主加油,我们开始都是这样的~
回复 使用道具 举报
主要还是不熟悉java,敲多了熟练后就很容易理解了
回复 使用道具 举报
这个在前门不要过多的伤脑筋,后面还会讲到的,还会结合实际例子来说。所以不懂的不需要花太多的时间去纠结他,后面看得多了有些东西自然而然的就明白了
回复 使用道具 举报
付江涛 发表于 2014-10-3 10:37
和你说吧,我最开始看的时候也不懂,只是知道有个饿汉式和懒汉式,然后继续往后学,后来看资料无意中看到饿 ...

版主英明!过谦了:lol
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马