1 2 3
| public boolean equals(Object obj) { return (this == obj); }
|
由equals的源码可以看出这里定义的equals与==是等效的;不同的原因就在于有些类(像String、Integer、Date等类)对equals进行了重写。
equals
- 基本数据类型:没有equal方法;
- 引用数据类型:因为String,八种基本数据类型的包装类都覆写了equals方法,因此equals比较的是内容;其他引用数据类型如果没有覆写equals方法,则判断是否指向同一个引用。
“==”
- 基本数据类型:判断值是否相等;
- 引用数据类型:判断是否指向同一个引用(堆内存地址)。
“==”比”equals”运行速度快,因为只是比较引用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| public class StringDemo { public static void main(String args[]) { String str0 = "Hello"; String str1 = "Hello"; String str2 = new String("Hello"); String str3 = str2; System.out.println(str1 == str2); System.out.println(str1 == str3); System.out.println(str2 == str3); System.out.println(str1.equals(str2)); System.out.println(str1.equals(str3)); System.out.println(str2.equals(str3)); int a1=1;double b1=1.0; System.out.println(a1==b1); ???? } }
|