심심풀이 문제1 - Object.equals()
뿌리튼튼 CS/Java2016. 7. 16. 13:35
문제
출력 결과는 무엇일까요?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | public class Test { public static void main(String[] args) { User a = new User("CGun", 29); User b = new User("CGun", 29); User c = a; System.out.println(a == b); System.out.println(a == c); System.out.println(a.equals(b)); } public static class User { private String name; private int age; public User(String name, int age) { this.name = name; this.age = age; } } } | cs |
정답
해설
위 소스코드를 자세히 보시면 User 클래스 안에 equals() 메서드가 없습니다.
근데 왜 컴파일 에러가 안날까요?
Java 에서 모든 클래스들은 기본적으로 Object 클래스를 상속받습니다.
extends Object 가 생략되었을 뿐입니다.
그리고 이 Object 클래스 안에 equals() 메서드가 존재하고 있으며, 소스코드는 아래와 같습니다.
네. 따라서 a.equals(b) 는 a == b 와 완전히 같습니다.
String.equals() 문제에 익숙한 분들을 향한 함정 문제였습니다.
참고
출처
'뿌리튼튼 CS > Java' 카테고리의 다른 글
심심풀이 문제2 - String (0) | 2016.08.02 |
---|---|
생성자를 쓰는 이유. 생성자의 필요성 (Why use constructors) (0) | 2016.08.02 |
[Collection] ArrayList vs Vector (0) | 2016.02.01 |
String vs StringBuilder vs StringBuffer (2) | 2016.01.28 |
Array size in Loops (0) | 2015.07.31 |