目录
1、既可以判断基本类型,也可以判断引用类型
2、当判断基本类型时,判断的是值是否相等。
3、当判断引用类型时,判断的是地址是否相等,即判定是不是同一对象。
- public class Test02 {
- public static void main(String[] args) {
- A a = new A();
- A b = a;
- A c = b;
- System.out.println(a == b);//true
- System.out.println(b == c);//true
- B d = a;
- System.out.println(d == a);//true
- int num1 = 1;
- int num2 = 1;
- System.out.println(num1 == num2);//true
-
- }
- }
- class A extends B{}
- class B {}
1、equals是Object方法,只能判断引用类型。
2、默认判断地址是否相等,子类中往往重写该方法,用于判断内容是否相等
string类的equals方法源码:
/** * public boolean equals(Object anObject) { * if (this == anObject) {//传入的对象相同 * return true;//返回true * } * if (anObject instanceof String) { //判断类型是否是String类型 * String anotherString = (String)anObject;//向下转型 * int n = value.length; * if (n == anotherString.value.length) { //判断长度是否相等 * char v1[] = value; * char v2[] = anotherString.value; * int i = 0; * while (n-- != 0) {//一个一个字符进行比较 * if (v1[i] != v2[i]) * return false; * i++; * } * return true; //当两个字符串所有字符都相等,就返回true * } * } * return false; * } */
Object类的equals源码
/**默认也是比较对象地址是否相同即判断是否是同一对象 * public boolean equals(Object obj) { * return (this == obj); * } */
- public class Test03 {
- public static void main(String[] args) {
- Integer integer1 = new Integer(5);
- Integer integer2 = new Integer(5);
- System.out.println(integer1 == integer2);//false
- System.out.println(integer1.equals(integer2));//true
-
- String str1 = new String("aa");
- String str2 = new String("aa");
- System.out.println(str1 == str2);//false
- System.out.println(str1.equals(str2));//true
- }
- }
1、判断两个Person对象的内容是否相等,如果两个Person对象的各个属性值都一样就返回true,反之返回false。
参考代码:
- public class Test04 {
- public static void main(String[] args) {
- Person person1 = new Person("小明", 25, '男');
- Person person2 = new Person("小明", 25, '男');
- System.out.println(person1.equals(person2));
- }
- }
-
- class Person{
- private String name;
- private int age;
- private char gender;
-
- public Person(String name, int age, char gender) {
- this.name = name;
- this.age = age;
- this.gender = gender;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public int getAge() {
- return age;
- }
-
- public void setAge(int age) {
- this.age = age;
- }
-
- public char getGender() {
- return gender;
- }
-
- public void setGender(char gender) {
- this.gender = gender;
- }
- //重写equals方法
- public boolean equals(Object o){
- //判断两个对象是否是同一个对象
- if (this == o){
- return true;
- }
- //判断对象类型是否为Person
- if (o instanceof Person){
- Person p = (Person)o;//对象向下转型
- return this.name == p.name && this.age == p.age && this.gender == p.gender;
- }
- return false;
- }
- }