본문 바로가기

카테고리 없음

[JAVA] equals() 와 ==

728x90
  • 일단 ==는 주소를 비교한다.
  • Object Class의 equals()도 주소를 비교한다.

예시1)

 

String a1 = "b";

String a2 = "b";

 

String a3 = new String("b");

String a4 = new String("b");

 

a1 == a2 는 true이다.(객체의 주소 값이 같기 때문)

a1.equals(a2)는 true이다.

a3 == a4 는 false이다. (객체의 주소 값이 다르기 때문)

a3.equals(a4)는 true이다. ?????????????

 

a3.equals(a4)가 true인 이유는 String 클래스는 Object 클래스의 equals를 오버라이딩 하고있다.

String 클래스에서 equals를 오버라이딩 한 부분

예시2)

Car라는 클래스를 만들었고 

멤버변수로 String 참조타입의 color라는 참조변수를 선언했다고 하자.

생성자가 매개변수로 차량 색을 받도록 했다.

 

Car car1 = new Car("빨간자동차");

Car car2 = new Car("빨간자동차");

 

car1.equals(car2)는 false

car1==car2도 false

 

왜냐하면 Car Class에서 equals를 오버라이딩 하지 않았기 때문이다!