Files
javaSE-0113/javaSE-day01/src/com/inmind/object01/Demo02.java

41 lines
1.6 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.inmind.object01;
/*
boolean equals(Object obj) 判断2个对象的内容是否相同
在实际开发中,地址值对于我们而言没有太大的作用,比较关心的数据内容,经常将内容相同的
2个对象看作是同一个引用数据类型比较时使用equals比较内容
对于引用数据类型:
==:比较的是地址值
equals比较的是内容
注意每个引用数据类型都默认直接或者间接继承Object也就是说每个引用类型都有它的equals方法
Object类底层equals源码
public boolean equals(Object obj) {
return (this == obj);
}
如果父类的内容比较功能不符合子类需求那就重写equals方法即可
总结每个对象的equals方法继承自Object类默认使用==比较地址值,这个对于我们而言,不满足咱们需求
因此我们会在每个类中重写equals方法不用手动写直接alt+insert自动生成
*/
public class Demo02 {
public static void main(String[] args) {
String str1 = "abc";
String str2 = new String("abc");
System.out.println(str1 == str2);//false,比较的是地址
System.out.println(str1.equals(str2));//true,比较的是内容
System.out.println("-------------------------------");
//一般在开发中,自定义类的对象也会进行比较
Person p1 = new Person("张三", 18);
Person p2 = new Person("张三", 18);
System.out.println(p1 == p2);//false
//false,希望是true但是底层源码是==比较地址false
System.out.println(p1.equals(p2));//true
}
}