黑马程序员技术交流社区
标题:
单例设计模式设置值问题
[打印本页]
作者:
林其荣
时间:
2013-1-15 14:27
标题:
单例设计模式设置值问题
本帖最后由 张向辉 于 2013-1-16 11:09 编辑
public static void main(String[] args) {
student s=student.show();
student s1=student.show();
s1.setAge(6);
s.setAge(5);
System.out.println(s1.getAge());
System.out.println(s.getAge());
}
}
class student{
private int age;
public void setAge(int age){
this.age=age;
}
public int getAge(){
return age;
}
private student(){}
static student stu=new student();
public static student show(){
return stu;
}
}
我用单例设计模式写了一个示例
我想问下这个结果为什么打印的是5 5 而不是6 5 s1.setAge(6)不是把值设置成6了吗那打印
s1.getAget();结果不应该是6吗 而s.getAget()获取的值就为5 那为什么s.getAget();
就是6呢? 谁能帮我详细分析下;
作者:
黑马刘向阳
时间:
2013-1-15 14:44
因为s1和s是同一个对象啊
作者:
唐晓
时间:
2013-1-15 15:23
单例模式:保证一个类在使用过程中,只有一个实例。优势就是他的作用,这个类永远只有一个实例。
student s=student.show();
student s1=student.show();
这里的s和s1是一个实例,你给s赋值后后给s1赋值,s1的值已经覆盖掉了s的值了,所以,打印结果是5 5
作者:
周志强
时间:
2013-1-15 15:31
你用的这个是先初始化对象,称为饿汉式的单例模式,3、 其优势就是:解决一个类在内存只存在一个对象,所以你的
student s=student.show();
student s1=student.show();
也就是 s和s1指向同一个引用。s1会把s覆盖掉,所以打印只有5 5
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2