![]()
1 public class Text1{
2 public static void main(String[] args){
3 Singleton s1=Singleton.getSingle();
4 Singleton s2=Singleton.getSingle();
5 Singleton s3=Singleton.getSingle();
6 System.out.println(s3.equals(s2));
7 System.out.println(s1.equals(s2));
8 System.out.println(s1.equals(s3));
9 System.out.println(s3==s2);
10 System.out.println(s1==s2);
11 System.out.println(s1==s3);
12 System.out.println(s1);
13 System.out.println(s2);
14 System.out.println(s3);
15 }
16 }
17 class Singleton{
18 private String name;
19 private static Singleton single=new Singleton();
20 private Singleton(){System.out.println("ddd");name="aa";}
21 public static Singleton getSingle(){
22 return single;
23 }
24 //重写equals方法-----第一步,boolean值返回,第二步,先写false判断,省字省钱,第三步,选择以下两种方式之一写逻辑,第二种阅读性差,代码简洁
25 /*
26 public boolean equals(Singleton single){
27 if(single==null) return false;
28 if(single!=this) return false;
29 if(single.hashCode()!=this.hashCode()) return false;
30 return single.name.equals(this.name) ? true : false;
31 }*/
32 //重写equals方法2-----利用||短路特性来实现
33
34 public boolean equals(Singleton single){
35 if(single==null||single!=this||single.hashCode()!=this.hashCode()) return false;
36 return single.name.equals(this.name) ? true : false;
37 }
38 }