본문 바로가기
JAVA/[JAVA] 바구니

[JAVA] Object Class

by oncerun 2020. 4. 8.
반응형

Class Object

  • java.lang.Object
  • public class Object

    Class Object is the root of the class hierarchy. Every class has Object as a superclass. All objects, including arrays, implement the methods of this class. -java API-

Object 클래스는 클래스의 최상위 계층입니다. 모든 클래스는 상위 클래스로써 Object클래스를 상속받고. 배열을 포함한 모든 객체는 Object클래스의 메서드를 구현합니다.

 

모든 클래스는 다른 클래스를 상속받지 않는다면 암시적으로 java.lang.Object클래스를 상속합니다.

Object의 클래스의 메서드는 모든 클래스에서 사용할 수 있습니다.

 

Object 메소드 

1. equals()

public boolean equals(Object obj)

Indicates whether some other object is "equal to" this one.

The equals method implements an equivalence relation on non-null object references:

 

equals 메소드는 매개변수로 객체를 받으며  현재 객체와 비교 객체의 값의 동일성 여부를 나타냅니다.

기 equals 메서드는 객체의 참조가 null값이 아닌 것에 대해 관계의 등가성을 나타냅니다.

 

우리가 자주 사용하는 비교연산자(==)와 동일한 결괏값을 리턴합니다

주소 값을 비교합니다.

주소 값을 비교하게 되면 같은 데이터를 가지고 있더라도 주소 값이 다르기 때문에 false가 반환됩니다.

 

 

객체의 데이터를 비교하기 위해서 Object의 equals()를 오버라이딩하여 같은 값일 때 true를 반환하고 비교하는 객체의 값이 같지 않다면 false 비교하도록 재정의를 합니다.

 

public class Main extends Object{
extends Object는 다른 클래스를 상속받지 않는 이상 자동적으로 Object클래스를 자동적으로 상속받는다
	private String value;
	public Main(String value) {
		this.value = value;
	}
	public static void main(String[] args) {
//		String a = new String("c");
//		String b = new String("c");
//		System.out.println(a == b);
//		System.out.println(a.equals(b));
		
		Main c = new Main("person");
		Main d = new Main("person");
		
		System.out.println(c.equals(d));
		System.out.println(c ==d);
	}

}

 

 

객체가 다르기때문에 false가 출력됩니다.  equals 랑 비교 연산자의 값이 동일하다는 것을  알 수 있습니다.

보통 논리적으로 동등을 비교하기위해서 equals의 메서드를  오버라이딩합니다

public class Main {
	private String value;
	
	public Main(String value) {
		this.value = value;
	}
	
	@Override
	public boolean equals(Object obj) {
		if(obj instanceof Main) {
			//Main객체가 들어왔는지 확인하는 조건
			Main ma = (Main)obj;
			if(value.equals(ma.value)) {
				return true;
			}
		}
		return false;
	}
    Main c = new Main("person");
	Main d = new Main("person");

비교하는 객체의 String value값이랑 현재 객체의 String value값은 equals를 오버라이딩하기전에는 false값을 출력했습니다.  

우리는 객체가 다르더라도 멤버의 값이 같다면 ture를 리턴하기를 원하기 때문에 equals를 재정의해서 사용하는 방법이 있습니다.

반응형

'JAVA > [JAVA] 바구니' 카테고리의 다른 글

[JAVA] Object Class (3)  (0) 2020.04.09
[Java] Object Class (2)  (0) 2020.04.08
[JAVA] Java.lang 패키지  (0) 2020.04.08
[JAVA] Anonymous Class  (0) 2020.04.08
[JAVA] 유효범위  (0) 2020.04.02

댓글