黑马程序员技术交流社区

标题: 关于单例设计模式——饿汉式的一个问题 [打印本页]

作者: 渠嘉树    时间: 2014-7-8 14:50
标题: 关于单例设计模式——饿汉式的一个问题
public class SingleDemo
{
        public static void main(String[] args)
        {
               

                Test t1 = Test.getInstance();
                Test t2 = Test.getInstance();
                t1.setNum(10);
                t2.setNum(20);
                System.out.println(t1.getNum());
                System.out.println(t2.getNum());
        }
}


class Test
{
        private int num;
        private static Test t = new Test();
        private Test(){}
        public static Test getInstance()
        {
                return t;
        }
        public void setNum(int num)
        {
                this.num = num;
        }
        public int getNum()
        {
                return num;
        }
}
运行结果都是20,记得毕老师讲过,再翻着看找不到这个知识点了。为什么都是20啊?表面上看,不应该是10,20么?{:3_65:}


作者: 黎志勇    时间: 2014-7-8 14:57
你回去补补静态变量的知识吧。
作者: 渠嘉树    时间: 2014-7-8 15:00
黎志勇 发表于 2014-7-8 14:57
你回去补补静态变量的知识吧。

{:3_65:}恩恩....
作者: ahuhxl    时间: 2014-7-8 15:05
Test t是静态的,t1和t2共享这个t,第一次设置为10,第二次设置的还是这个t,被覆盖为20了
作者: 渠嘉树    时间: 2014-7-8 15:09
ahuhxl 发表于 2014-7-8 15:05
Test t是静态的,t1和t2共享这个t,第一次设置为10,第二次设置的还是这个t,被覆盖为20了 ...

嗯嗯嗯 谢谢哈   是我知识太不牢固了
作者: 杨殿生    时间: 2014-7-8 17:04
t1,t2指向的都是同一片内存,所以你打印出来的是最后一次改变的值20
作者: 晴儿    时间: 2014-7-8 17:29
单例设计模式,内存中只允许一个对象存在




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2