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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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:}

6 个回复

倒序浏览
你回去补补静态变量的知识吧。
回复 使用道具 举报
黎志勇 发表于 2014-7-8 14:57
你回去补补静态变量的知识吧。

{:3_65:}恩恩....
回复 使用道具 举报
Test t是静态的,t1和t2共享这个t,第一次设置为10,第二次设置的还是这个t,被覆盖为20了
回复 使用道具 举报
ahuhxl 发表于 2014-7-8 15:05
Test t是静态的,t1和t2共享这个t,第一次设置为10,第二次设置的还是这个t,被覆盖为20了 ...

嗯嗯嗯 谢谢哈   是我知识太不牢固了
回复 使用道具 举报
t1,t2指向的都是同一片内存,所以你打印出来的是最后一次改变的值20
回复 使用道具 举报
单例设计模式,内存中只允许一个对象存在
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马