Java equals 메소드는 객체 클래스의 메소드이며 참조 유형을 결정하는 데에만 사용할 수 있습니다. 기본적으로 equals 메소드는 주소가 동일한지 여부를 결정합니다. 이 메소드는 내용이 동일한지 확인하기 위해 종종 하위 클래스에서 재정의됩니다. 사용 구문은 "public boolean equals(Object obj) {return (this == obj);}"입니다.
이 튜토리얼의 운영 환경: Windows 10 시스템, java8, Dell G3 컴퓨터.
Java의 equals 메소드
"=="는 비교 연산자입니다.
Object 클래스의 equals 메소드 소스 코드:
Object 클래스의 equals 메소드는 기본적으로 객체 주소가 동일한지 비교합니다.
public boolean equals(Object obj) { return (this == obj); }
"hello".equals("abc");
설명: 이것은 현재 객체를 참조하고, 이것은 누가 Equals 메서드를 호출했는지를 참조하며, 위의 hello는 Equals를 호출하므로 문자열 hello를 참조하고 == 오른쪽에 있는 obj 객체가 abc로 전달됩니다.
연습 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:
설명:
- 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:
설명:
- sout1: 65와 65.0은 동일합니다. true
- sout2: 문자의 본질은 여전히 숫자입니다. AsciI 테이블을 확인하세요. A는 12입니다. true
- sout3: 할 말이 없습니다
- sout4: 할 말이 없습니다
- sout5: 할 말이 없습니다.
- sout6: 동일한 유형이 아닙니다. ==직접 컴파일 오류
관련 권장 사항: "Java 비디오 튜토리얼"
위 내용은 Java 같음 메소드란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!