public class test1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 对于对象来说
// 特殊的类,如String、File、Data,使用 == 比较的是对象(对象的地址),使用equals比较的是内容
//除了特殊的类之外的其他的普通的类的对象,==和equals比较的都是对象(对象的地址)
//如果你想改变某一个类的equals,不想用equals来比较对象的内存地址,就需要重写equals方法 (结论,记住就行)
Person p1 = new Person();
Person p2 = new Person();
System.out.println(p1 == p2); //false
System.out.println(p1.equals(p2)); // false
p1=p2;
System.out.println(p1 == p2); //true
System.out.println(p1.equals(p2)); // true
test1 t = new test1();
// System.out.println(p1==t); // 编译错误,==前后的数据类型必须一致
System.out.println(p1.equals(t)); // false
String s1 = new String("abc");
String s2= new String("abc");
System.out.println(s1==s2); // false
System.out.println(s1.equals(s2)); // true
String s3 = "abc";
String s4 = "abc"; //用字面量创建对象时,只在堆中的常量池中创建一个对象,字符串内容相同,则地址相同
// 用new创建对象时,常量池中有对象,堆中常量池外也有对象,字面量的方法要比new的方法省内存
System.out.println(s3==s4); // true
System.out.println(s3.equals(s4)); // true
// 总结: == 是比较对象的内存地址
// equals 对于特殊类String,File,Date比较的是内容(值),对于其他普通的类比较的也是内存地址
}
}
java中操作符==和equals方法的区别
最新推荐文章于 2024-09-24 08:39:48 发布