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를 오버라이딩 하고있다.
예시2)
Car라는 클래스를 만들었고
멤버변수로 String 참조타입의 color라는 참조변수를 선언했다고 하자.
생성자가 매개변수로 차량 색을 받도록 했다.
Car car1 = new Car("빨간자동차");
Car car2 = new Car("빨간자동차");
car1.equals(car2)는 false
car1==car2도 false
왜냐하면 Car Class에서 equals를 오버라이딩 하지 않았기 때문이다!