- == :基本数据类型比较的是值,引用数据类型(对象、数组等)比较的是内存地址。
- equals():比较的是内容。
- 类没有覆盖equals()方法:比较两个对象时,等价于==,默认用Object类的equals()方法。源码如下:
public boolean equals(Object obj) {
return (this == obj);
}
2. 类覆盖了equals()方法:用来比较对象中的属性是否相等。若相等,返回true。
String a = new String("ab"); // a 为一个引用
String b = new String("ab"); // b为另一个引用,对象的内容一样
/** String类型变量直接赋值的话,会保存在常量池中,若两个变量内容一样,
那么它们的引用也一样,防止多余空间开辟 */
String aa = "ab"; // 放在常量池中
String bb = "ab"; // 从常量池中查找
if (aa == bb) { // true
System.out.println("aa==bb");
}
if (a == b) { // false,非同一对象
System.out.println("a==b");
}
if (a.equals(b)) { // true
System.out.println("a等于b");
}
if (42 == 42.0) { // true
System.out.println("true");
}