>  기사  >  Java  >  Java 같음 메소드란 무엇입니까?

Java 같음 메소드란 무엇입니까?

藏色散人
藏色散人원래의
2023-03-10 10:58:0718167검색

Java equals 메소드는 객체 클래스의 메소드이며 참조 유형을 결정하는 데에만 사용할 수 있습니다. 기본적으로 equals 메소드는 주소가 동일한지 여부를 결정합니다. 이 메소드는 내용이 동일한지 확인하기 위해 종종 하위 클래스에서 재정의됩니다. 사용 구문은 "public boolean equals(Object obj) {return (this == obj);}"입니다.

Java 같음 메소드란 무엇입니까?

이 튜토리얼의 운영 환경: Windows 10 시스템, java8, Dell G3 컴퓨터.

Java의 equals 메소드

1. "==" 연산자

"=="는 비교 연산자입니다.

  • "==" 기본 유형과 참조 유형을 모두 결정할 수 있습니다.
  • "=="기본형을 판단하면 값이 같은지 판단하게 됩니다. 예: int i=10; double d=10.0
  • "=="참조 유형을 결정하면 주소가 동일한지, 즉 동일한 객체인지 확인합니다.

2. Equals 메서드

  • equals는 객체 클래스의 메서드이며 참조 유형을 결정하는 데에만 사용할 수 있습니다.
  • equals 메서드는 기본적으로 주소가 같은지 확인합니다. 이 메서드는 내용이 같은지 확인하기 위해 하위 클래스에서 재정의되는 경우가 많습니다. 예를 들어 String 및 Integer 클래스의 소스 코드는 같습니다.

Object 클래스의 equals 메소드 소스 코드:

Object 클래스의 equals 메소드는 기본적으로 객체 주소가 동일한지 비교합니다.

    public boolean equals(Object obj) {
        return (this == obj);
    }
"hello".equals("abc");

설명: 이것은 현재 객체를 참조하고, 이것은 누가 Equals 메서드를 호출했는지를 참조하며, 위의 hello는 Equals를 호출하므로 문자열 hello를 참조하고 == 오른쪽에 있는 obj 객체가 abc로 전달됩니다.

3. Equal 메소드 다시 작성하기

연습 1:

package object;
/*
判断两个person对象的内容是否相等
如果两个person对象的各个属性值都一样,则返回true,反之返回false
 */
public class EqualsExercise {
    public static void main(String[] args) {
        Person person1 = new Person("jack", 10, '男');
        Person person2 = new Person("jack", 10, '男');
        System.out.println(person1.equals(person2));   //输出结果是true
    }
}

class Person {
    private String name;
    private int age;
    private char gender;

    //重写Object的equals方法
    public boolean equals(Object obj) {
        //如果比较的两个对象是同一个对象,则直接返回true
        if (this == obj){   //this就代表调用equals方法的那个对象,obj就是方法里面的实参
            return true;
        }
        //类型判断
        if (obj instanceof Person){  //obj是Person,我们才比较
            //进行 向下转型(即obj转成Person); 因为我需要得到obj的各个属性,如果不转型,拿不到
            Person p = (Person) obj;
            return this.name.equals(p.name) && this.age == p.age && this.gender == p.gender;
        }
        //如果不是person,则直接返回false;总不能拿一个人跟一个狗比
        return false;
    }


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

팁:

instanceof 사용법: result = object instanceof class

instanceof는 왼쪽의 객체이고 오른쪽의 클래스입니다. 객체가 올바른 클래스 또는 하위 클래스에 의해 생성된 객체인 경우 true를 반환하고, 그렇지 않으면 false를 반환합니다.

연습 2:

Java 같음 메소드란 무엇입니까?

설명:

  • sout1: p1과 p2는 모두 객체이므로 ==는 주소가 동일한지 확인합니다. false
  • sout2: p1.name과 p2. name 둘 다 문자열이므로 여기의 equals는 String 클래스의 equals 메서드를 호출하여 내용이 동일한지 확인합니다. true
  • sout3: p1과 p2는 모두 객체이므로 여기서의 equals는 Object 클래스의 equals 메서드입니다. . 판단하는 것은 주소가 동일한지 여부입니다. false
  • sout4: s1과 s2는 모두 String 클래스의 객체이므로 여기의 equals는 String 클래스의 equals 메서드를 호출하고 판단하는 것은 내용입니다. 동일합니다. true
  • sout5: s1과 s2는 모두 객체이므로 ==는 주소가 동일한지 확인합니다. false

연습 3:

Java 같음 메소드란 무엇입니까?

설명:

  • sout1: 65와 65.0은 동일합니다. true
  • sout2: 문자의 본질은 여전히 ​​숫자입니다. AsciI 테이블을 확인하세요. A는 12입니다. true
  • sout3: 할 말이 없습니다
  • sout4: 할 말이 없습니다
  • sout5: 할 말이 없습니다.
  • sout6: 동일한 유형이 아닙니다. ==직접 컴파일 오류

관련 권장 사항: "Java 비디오 튜토리얼"

위 내용은 Java 같음 메소드란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.