[java] 데이터 타입

Seongho·2023년 1월 3일
0

java

목록 보기
2/11

primitive type

메모리에 데이터를 직접 저장하는 데이터 타입

primitive type은 null로 지정이 불가능하다. wrapper class를 사용하면 primitive type을 reference type으로 변환하여 null로 지정이 가능해진다.

reference type

클래스, 열거, 문자열, 배열, 인터페이스를 이용하여 생성된 객체의 주소값을 저장하는 타입

Wrapper class

  • 어떤 때는 primitive data type을 객체로 취급해야 하는 경우가 있다. null로 초기화 해야 하거나, 메소드의 인자로 객체 타입만 요구되는 경우...등
  • 따라서 이 때, primitive type을 객체로 포장해주는 클래스인 wrapper cless를 사용한다. wrapper class는 java.lang 패키지에 포함되어 있다.
  • wrapper class는 인스턴스에 저장된 값을 변경할 수 없다. 즉, 산술연산이 불가능하므로, UnBoxing을 수행한 후 다시 저장해야 한다.
  • primitive type -> wrapper class : Boxing
  • wrapper class -> primitive type : UnBoxing
  • 박싱과 언박싱을 new를 사용하지 않고 자동으로 해 주는 것을 오토박싱, 오토언박싱이라 한다.
Integer num = new Integer(17); // 박싱
int n = num.intValue();        // 언박싱
//
System.out.println(n);			// 17
//
Character ch = 'X'; // Character ch = new Character('X'); : 오토박싱
char c = ch;        // char c = ch.charValue();           : 오토언박싱
//
System.out.println(c);			// X
  • 박싱을 통해 인스턴스에 저장된 값은 ==연산자를 사용하면 안되고 .equals() 메소드를 사용해야 한다.
public class Wrapper03 {
//
    public static void main(String[] args) {
//
        Integer num1 = new Integer(10);
        Integer num2 = new Integer(20);
        Integer num3 = new Integer(10);
//
        System.out.println(num1 < num2);       // true
        System.out.println(num1 == num3);      // false
        System.out.println(num1.equals(num3)); // true
//
    }
//
}

** primitive type보다 wrapper class가 3배정도 느리다. 불필요한 사용 주의!!

profile
Record What I Learned

0개의 댓글