본문 바로가기

Programing/Java

[Java] Object Class와 Wrapper Class

728x90
반응형

[Java] Object Class와 Wrapper Class


1) Class Object

-> Object class는 모든 class의 superclass이다.

-> Object clas의 member method

  • boolean equals(Object obj) - Compares this object to its argument
  • int hashCode() - Returns an integer hash code value for this object
  • String toString() - Returns a string that textually represents the object
  • Class<?> getClass() - Returns a unique object that identifies the class of this object

boolean equals(Object obj) - overriding example

@Override
public boolean equals(Object obj){
	if(obj == this) return true;
    if(obj == null) return false;
    if(this.getClass() == obj.getClass()){
    	Person other = (Person) obj;
        return name.equals(other.name) && number.equals(other.number);
    } else{
    	return false;
    }
}

2) Class Class

-> 모든 class는 하나의 Class 객체를 가진다.

-> 이 객체는 각각의 class에 대해서 유일하다.

-> 메서드 getClass()는 Object class가 제공하는 method이며, 이 유일한 Class객체를 반환한다.

-> 비교 대상인 두 객체 (this와 obj)가 동일한 class의 객체임을 알 수 있다.


3) Class Wrapper

-> Java에서 primitive type data와 non-primitive type data, 즉 객체는 근본적으로 다르게 처리된다.

-> 가령 Object type의 배열에는 다형성의 원리에 의해서 모든 종류의 객체를 저장할 수 있다. 

하지만, primitive type data는 객체가 아니므로 저장할 수 없다.

-> 때때로 primitive type data를 객체로 만들어야 할 경우가 있다. (universal array에 넣어야 할 경우)

이럴 때 Integer, Double, Character 등의 wrapper class를 이용한다.

 

Object[] array = new Object[100];

int a = 20;
Integer age = new Integer(a); // wrapping
int b = age.intValue(); // unwrapping

// 데이터 타입간의 변환 기능을 제공
String str = "1234";
int d = Integer.parseInt(str);

 

4) Autoboxing과 Unboxing

Object[] theArray = new Object[100];
theArray[0] = 10;
int a = (Integer)theArray[0];

-> 10은 정수이지만 Java 컴파일러가 자동으로 이것을 Integer 객체로 변환해준다. (auto boxing)

-> theArray[0]에 저장된 것은 Integer객체이지만 Java 컴파일러가 자동으로 정수로 변환해준다. (unboxing)

728x90
반응형

'Programing > Java' 카테고리의 다른 글

[Java] Generic Programming  (0) 2021.01.04
[Java] 추상클래스와 인터페이스  (0) 2020.12.28
[Java] static과 non-static && 접근 제어  (0) 2020.12.19
[Java] String 클래스 기본 메서드  (0) 2020.12.10
[Java] 값에 의한 호출  (0) 2020.12.09