///////
Search

[220929] Object 클래스_김예진

날짜
2022/09/29
텍스트

16 . Object 클래스

Object 클래스

Object 클래스는 java.lang 패키지에 들어있으며 모든 클래스의 조상 이라고 할 수 있다.

Object 클래스의 메소드

public boolean equals(Object obj) → 객체 자신과 객체 obj가 같은 객체인지 검사한다. (같으면 true 리턴)
public String toString() → 객체의 정보를 문자열로 표현하여 반환한다.
protected Object clone() → 객체 자신의 복사본을 생성하여 반환한다.
public int hashCode() → 객체에 대한 해쉬 코드를 반환한다.
protected void finalize() → 가비지 콜렉터에 의해 호출된다.
public final Class getClass() → 객체의 클래스 정보를 반환한다.
기본적으로 11개가 포함되어 있고, 오버라이딩해서 활용할 수 있다.
위의 리스트는 자주 사용되는 메소드들이다.

equals() 메소드

equals()는 ==연산자를 이용해서 객체의 주소가 동일한지를 검사해서 true와 false를 반환한다.
class Circle { int radius; public Circle(int radius) { this.radius = radius; } } public class CircleTest { public static void main(String[] args) { Circle obj1 = new Circle(10); Circle obj2 = new Circle(10); if (obj1 == obj2) { System.out.println("2개의 원은 같습니다."); } else { System.out.println("2개의 원은 같지 않습니다."); } } }
Java
복사
출력 : 2개의 원은 같지 않습니다.
Java
복사
obj1와 obj2의 radius가 둘 다 10인 원인데 같지 않다고 출력되는 이유가 뭘까?
⇒ 위의 코드에서 비교하는 obj1 == obj2는 객체의 주소값을 비교하는 것이기 때문에 반지름이
같은 원인지 비교하는 취지에는 맞지 않다.
class Circle { private int radius; public Circle(int radius) { this.radius = radius; } public int getRadius() { return radius; } @Override public boolean equals(Object obj) { if (obj instanceof Circle2) { Circle2 c1 = (Circle2) obj; if (getRadius() == c1.getRadius()) { return true; } else { return false; } } return false; } } public class CircleTest { public static void main(String[] args) { // TODO Auto-generated method stub Circle2 circle1 = new Circle2(10); Circle2 circle2 = new Circle2(10); if (circle1.equals(circle2)) { System.out.println("2개의 원은 같습니다."); } else { System.out.println("2개의 원은 같지 않습니다."); } } }
Java
복사
출력 : 2개의 원은 같습니다.
Java
복사
위의 코드처럼 equals() 함수를 오버라이딩 해서 목적에 맞게 객체의 세부 내용을 비교해서 같은지 다른지를 구별하도록 사용하는 것이 맞다.

toString() 메소드

String 클래스는 문자열을 구성하는 문자들을 내부에 저장한다.
class Student { private String name, sex; Student(String name, String sex) { this.name = name; this.sex = sex; } @Override public String toString() { return "이름은 " + name + "이고 성별은 " + sex + "입니다."; } } public class StudentToStringTest { public static void main(String[] args) { Student s = new Student("홍길동", "남자"); System.out.println(s); } }
Java
복사
출력 : 이름은 홍길동이고 성별은 남자입니다.
Java
복사
toString() 메소드는 원래 주소를 출력해주는 메소드지만, 오버라이딩 해서 멤버 변수를 출력해주는 용도로 기본적으로 많이 사용한다. 위의 코드처럼 원하는 형식의 출력으로 만들어 줄 수도 있다.

String 클래스

String 클래스는 Java에서 제공하는 문자열을 위한 클래스다.
(Java 외의 언어에서는 문자열을 char형의 배열로 다룬다.)