본문 바로가기
Category/JAVA

[JAVA] Object클래스& ==연산자와 equals메소드

by developer__Y 2023. 11. 10.
Java에서 제공하는 기본 패키지
  • java.lang

자바 language 패키지 : 스트링,수학등 자바 프로그래밍에 필요한 기본적인 클래스와 인터페이스

자동으로 사용가능하기때문에 import 필요없음.

 

  • java.util

날짜,시간,해시맵등 다양한 유틸리티 클래스와 인터페이스 제공

 

  • java.io

키보드,모디터등 입출력을 할수있는 클래스와 인터페이스 제공

 

Object 클래스

 

java.lang 패키지에 포함되어있고, 모든 클래스의 상위 클래스이다.

모든 클래스에 강제 상속되며, 모든 객체가 공통적으로 가지는 객체의 속성을 나타내는 메소드를 가지고있다.

 

 

(==연산자)와 equals()의 차이점

 

==연산자는 참조변수가 가리키는 주소값을 비교한다.

equals() 메소드는 문자열같은 경우 내용을 비교한다.

 

Point a = new Point(2,3);

Point b = new Point(2,3);

Point c = a;

class Point {
int x, y;
public Point(int x, int y) {
this.x= x; this.y =y;
}
}

Point a = new Point(2,3);
Point b = new Point(2,3);
Point c = a;
if(a == b)// false
System.out.println("a==b");
if(a == c)// true
System.out.println("a==c");

 

위의 코드를 그림으로 나타내면 

즉, a와 c는 같은 객체를 참조하고 있기때문에 a==c는 true다.

그러나, b는 다른 객체를 참조하고 있기 때문에 a==b는 false다.

 

두 객체의 내용을 비교하고 싶을때는, 모든 클래스의 조상인 Object가 가진 toString()메소드를

오버라이딩하여 비교한다.

class Point3{
	private int x,y;
	public Point3(int x,int y) {
		this.x = x;
		this.y = y;
	}
//	toString 메소드를 해시코드가 나오는것이 아닌 객체 값을 비교할수있게 오버라이딩하여 사용한다.
	public boolean toString(Object obj) {
		Point3 p = (Point3)obj;
		if(x==p.x&&y==p.y) {
			return true;
	} else return false;
	}
}

public class EqualsEx {
	public static void main(String[] args) {
		Point3 a = new Point3(3, 3);
		Point3 b = new Point3(3, 3);
		Point3 c = new Point3(3, 4);
		
		if(a==b) {
			System.out.println("a==b");
		}else {
			System.out.println("a!=b"); }
		
			if(a.toString(b)) {
				System.out.println("a is equal to b");
				
			}else {
				System.out.println("a is not equal to b");
			
		}