目录
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;
- }
- }