Home  >  Article  >  Java  >  Distinguish between equal method and equals method in Java

Distinguish between equal method and equals method in Java

WBOY
WBOYOriginal
2024-02-18 14:17:07629browse

Distinguish between equal method and equals method in Java

The difference between equal and equals in Java requires specific code examples

In Java, we often need to compare whether two objects are equal. In this case we usually use equal method or equals method in Java. Although they look similar, they have some important differences. This article will introduce the difference between equal and equals and explain it through specific code examples.

First, let’s take a look at the equal method. The equal method is a method in the Object class, and all objects in Java can call this method. This method uses reference comparison, that is, to determine whether two objects have the same reference. Two objects are equal if their references are the same. The following is a sample code:

String str1 = new String("Hello");
String str2 = new String("Hello");
boolean result = str1.equals(str2);
System.out.println(result); // 输出结果为 true

In the above code, we created two string objects str1 and str2, whose values ​​are "Hello". However, these two objects are created separately through the new keyword, so their references are different. However, since the String class overrides the equals method, when we call str1.equals(str2), it will return true, indicating that the two strings are equal.

Next, let’s take a look at the equals method. The equals method is a public method of the Object class. We can override it to compare the contents of two objects. By default, the equals method still uses reference comparison. If we want to customize the comparison rules, we must override the equals method. The following is a sample code:

public class Person {
    private String name;
    private int age;

    // 省略构造函数和其他方法

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null || getClass() != obj.getClass()) {
            return false;
        }

        Person person = (Person) obj;

        if (age != person.age) {
            return false;
        }
        return name != null ? name.equals(person.name) : person.name == null;
    }

    // 省略hashCode方法和其他方法    
}

In the above sample code, we created a Person class and overridden the equals method. When overriding the equals method, we first determine whether the references of the two objects are the same. If they are the same, we can directly return true. Then we determine whether obj is empty and belongs to the same class, then convert obj to Person type, and compare whether the values ​​of name and age are equal.

The following is a sample code for using Person:

Person person1 = new Person("Tom", 20);
Person person2 = new Person("Tom", 20);
boolean result = person1.equals(person2);
System.out.println(result); // 输出结果为 true

In the above code, we created two Person objects, person1 and person2, with the same name and age values. When we call person1.equals(person2), because we have rewritten the equals method, the values ​​of name and age will be compared during comparison, so the returned result is true.

To sum up, equal and equals are methods commonly used in Java to compare whether objects are equal. The equal method is a method of the Object class, which determines whether two objects are equal through reference comparison; the equals method is a customized comparison method that allows you to customize comparison rules. In actual development, we should choose to use these two methods to compare objects according to specific needs.

The above is the detailed content of Distinguish between equal method and equals method in Java. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn