1 //equals方法源码
2 public boolean equals(Object anObject) {
3 //判断是否是相同对象
4 if (this == anObject) {
5 return true;
6 }
7 //判断anObject是否是String类型
8 if (anObject instanceof String) {//
9 String aString = (String)anObject;
10 //判断编码是否相同
11 if (coder() == aString.coder()) {//
12 //比较两个字符串是否完全相等
13 return isLatin1() ? StringLatin1.equals(value, aString.value)
14 : StringUTF16.equals(value, aString.value);
15 }
16 }
17 return false;
18 }
1 String stringCompiler = "A";
2 String stringNew = new String("A");
3
4 StringBuilder stringBuilder = new StringBuilder("A");
5 StringBuffer stringBuffer = new StringBuffer("A");
6
7 //不是相同对象
8 System.out.println(stringCompiler == stringNew); // false
9 //不是相同对象,但都是String类型,编码、字符值都相同
10 System.out.println(stringCompiler.equals(stringNew)); // true
11 //stringBuilder不是String类型
12 System.out.println(stringCompiler.equals(stringBuilder)); // false
13 //stringBuffer不是String类型
14 System.out.println(stringNew.equals(stringBuffer)); // false