[Java] 자료형 : Primitive vs Reference

oneofakindscene·2021년 8월 27일
0

Java

목록 보기
3/12

Primitive vs Reference

자바의 자료형은 Primitive Type(기본형) 과 Reference Type(참조형)으로 나뉩니다.

Primitive Type(기본형)

  • 비객체 타입으로, Null을 가질 수 없는 형태

Reference Type(참조형)

  • 참조형은 기본적으로 java.lang.Object 를 상속받습니다. 또한, 선언한 자료형이 기본형이 아닌경우 참조형이라 보면 됩니다. 참조형에는 Class,Interface,Arrays이 있습니다.

1. Class Type

1-1 String Class

  • 클래스형에서도 String 클래스는 조금 특별합니다.
  • 이 클래스는 참조형에 속하지만 기본적인 사용은 기본형처럼 사용합니다. 그리고 불변하는immutable 객체입니다.
  • String 클래스에는 값을 변경해주는 메소드들이 존재하지만 해당 메소드를 통해 데이터를 바꾼다 해도 새로운 String 클래스 객체를 만들어내는 것입니다.

1-2 (중요!) Wrapper Class

  • 기본형은 앞쪽에서 서술한대로 비객체이기 때문에 null을 넣을 수 없다고 했습니다.
  • 하지만, 방법은 존재하는법이죠. 기본형에 null을 넣고 싶다면 래퍼 클래스Wrapper Class를 활용하면 됩니다. 래퍼 클래스는 기본형을 클래스로 감싼 형태입니다. 다음처럼 사용합니다.

2. Interface Type

  • 일반적으로 인터페이스라고 한다면 추상 클래스abstract class와 많이 비교 되곤 합니다.
  • 하지만, 이 포스트는 순수한 자료형태에 대해서 다뤄보도록 합니다.
  • 아래처럼 인터페이스를 만듭니다.
interface MyInterface<T> {
    void add(T value);
}
  • 인터페이스를 만들게 되면 새로운 참조 자료형Reference Data Type을 만드는 것과 같습니다.
  • 참고로 기존에 있는 자료형의 이름도 만들 수 있습니다(ex:Long).
  • 그리고 인터페이스도 자료형이기 때문에 자료형으로써 자신을 구현한 객체의 주소를 가질 수 있습니다.
  • 하지만, 인터페이스에 정의된 메소드만 사용할 수 있겠죠.

3. Array Type

  • 배열형은 기본형(Primitive)으로도 만들 수 있고 참조형(Reference)으로도 만들 수 있습니다.
  • 자료형에 대해 []를 선언함으로 배열을 지정할 수 있습니다.
  • 참고로 배열형 변수 또한 배열의 주소를 가지고 있는 것이기 때문에 클래스형(Class Type)의 특징과 일치합니다.
  • 같은 객체의 주소를 바라보게 만들면 동일한 배열을 가리키게 됩니다.
  • 그리고 아래 코드의 마지막 라인처럼 [][]등으로 중첩 괄호를 사용하게 된다면 다중 배열로 사용할 수 있습니다.
public class ArrayType {
    public static void main(String[] args) {
        int [] i = new int[2];
        Long [] l = new Long[2];
        Object[][] o = null;
    }
}

4. Enum Type

  • 보통 열거형이라고 합니다.
  • String 클래스와 마찬가지로 불변의 객체이기도 합니다.
  • 상수의 집합을 만들거나 특정 객체의 상태를 모아서 열거형으로 만들면 코드의 가독성이 좋아질 수 있습니다.

References

profile
oneofakindscene

0개의 댓글