
두 객체가 같은지를 비교할 때 쓰는 메서드이다.
==라는 걸로 비교할 수도 있다.
하지만 ==는 장난감 이름이 아니라, "이 장난감이 어디에 놓여 있는지"를 비교한다.
그래서 이름을 제대로 확인하려면 equals()를 써야 한다.
String 내장난감 = "로봇";
String 친구장난감 = "로봇";
if (내장난감.equals(친구장난감)) {
System.out.println("우와! 너랑 나랑 똑같은 장난감이네!");
} else {
System.out.println("우리는 다른 장난감을 가지고 있어.");
}
if / else를 활용하여 위와 같은 코드를 생성하면 String의 내 장난감과 친구의 장난감 내용이 같으면 똑같은 장난감이라는 결과를 출력한다.
우와! 너랑 나랑 똑같은 장난감이네!
반대로,
String 내장난감 = "로봇";
String 친구장난감 = "자동차";
if (내장난감.equals(친구장난감)) {
System.out.println("우와! 너랑 나랑 똑같은 장난감이네!");
} else {
System.out.println("우리는 다른 장난감을 가지고 있어.");
}
내용이 다르면 else의 값이 출력된다.
String 내장난감 = new String("로봇"); // 새로 만든 장난감
String 친구장난감 = new String("로봇"); // 또 다른 새로 만든 장난감
if (내장난감 == 친구장난감) {
System.out.println("장난감 위치도 같고, 같은 장난감이야!");
} else {
System.out.println("이건 위치가 달라서 다른 장난감처럼 보이네!");
}
결과
이건 위치가 달라서 다른 장난감처럼 보이네!
String 내장난감 = new String("로봇"); // 새로 만든 장난감
String 친구장난감 = new String("로봇"); // 또 다른 새로 만든 장난감
if (내장난감.equals(친구장난감)) {
System.out.println("이건 이름이 같아서 같은 장난감이야!");
} else {
System.out.println("이건 이름이 달라서 다른 장난감이야.");
}
결과
이건 이름이 같아서 같은 장난감이야!
==는 "주소(메모리에 저장된 위치)"를 비교한다.
네 장난감과 친구 장난감이 둘 다 "로봇"이어도, 새로 만든 장난감이라면 다른 위치에 저장돼서 ==로 비교하면 다르다고 나오는 것이다.
equals()는 "내용(이름)"을 비교한다.
그래서 장난감이 어디 있든 이름만 같으면 같다고 출력 된다.