조작부호==대상과의 equals() 방법

2115 단어 jdk
1. 조작부호 "=="
두 개의 조작원이 같은지 비교하는데 이 두 조작원은 기본 유형일 수도 있고 인용 유형일 수도 있다.
작업원이 인용 형식 변수일 때, 이 두 인용 변수는 모두 같은 대상을 인용해야 결과가true가 된다.
Integer int1 = new Integer(1);
Integer int2 = new Integer(1);
Integer int 3 = int1;     //int3 int1 

int[] arr1 = new int[1];
int[] arr2 = new int[1];
int[] arr3 = arr1;       //arr3 arr1 

System.out.println(int1==int2);  // false
System.out.println(int1==int3);   // true

System.out.println(arr1==arr2);    // false
System.out.println(arr1==arr3);   // true

참고: 참조 유형 변수를 비교할 때 "=="양쪽의 변수는 선언된 유형이 같은 유형이거나 상속 트리의 같은 상속 분기에 있어야 하며 그렇지 않으면 컴파일 오류가 발생합니다.
예를 들어 Person 클래스는 부모 클래스이고 Student 클래스, Teacher 클래스는 모두 Person 클래스를 직접 계승한다.
Student s = new Student();
Teacher t = new Teacher();
System.out.println(s==t);

컴파일 오류.
Person s = new Student();
Person t = new Teacher();
System.out.println(s==t); 

성명 형식이 같기 때문에 컴파일링이 통과되었지만, 실행할 때 형식이 다르고, 실행할 때 오류가 발생했습니다.
 
2. 대상의 equals () 방법
equals () 방법은 Object 클래스에 정의된 방법입니다. 먼저 소스 코드를 살펴보겠습니다.
public boolean equals(Object obj) {
    if(this==obj)  return true;
    else return false;
}

조작부호 '==' 의 사용법과 같다는 것을 알 수 있다. 매개 변수obj가 인용한 대상이 현재 대상과 같은 대상일 때true를 되돌려주고, 그렇지 않으면false를 되돌려준다.
 
그러나 JDK 중에는 Object의 equals () 방법을 덮어쓰는 클래스가 있습니다. 두 대상의 유형이 일치하고 내용이 일치하면true로 돌아갑니다.
이러한 종류는 다음과 같다:java.io.File 、java.util.Date 、java.lang.String, 포장 클래스(예를 들어java.lang.Integer,java.lang.Double 등).
Integer int1 = new Integer(1);
Integer int2 = new Integer(1);

String str1 = new String("Hello");
String str2 = new String("Hello");

System.out.println(int1==int2);   // false
System.out.println(int1.equals(int2));   // true

System.out.println(str1==str2);    // false
System.out.println(str1.equals(str2));  // true

 

좋은 웹페이지 즐겨찾기