ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Java - Primitive Type & Reference Type
    Language/Java 2022. 2. 19. 12:05

    Primitive Type(기본형 타입)

    Primitive Type의 종류

     

     - Java에서는 총 8가지의 primitive type을 미리 정의하고 제공한다.

     -  Java에서 primitive type을 사용하기 위해서는 선언이 필요하다.

     - OS에 따라 자료형의 길이가 변하지 않는다.

     - 비 객체 타입이기 때문에, null 값을 가질 수 없다. 만약 primitive type에 null을 넣고 싶다면 wrapper class를 활용해야 한다.

     - 메모리의 Stack 영역에 저장된다.

     

    boolean

     - 논리형인 boolean의 기본값은 false이며, 참과 거짓을 저장하는 타입이다.

     - boolean은 실제로 1bit면 충분하지만, 데이터를 다루는 최소 단위가 1byte이므로 메모리 크기가 1byte이다.

     

    char

     - char는 문자를 다루기 위한 타입이며, Java에서 유일하게 제공되는 unsigned 형태이다.

     

    byte

     - byte는 주로 이진 데이터를 다루는 데 사용되는 타입이다.

     

    short

     - short는 C언어와의 호환을 위해 사용되는 타입으로 잘 사용되지는 않는 타입이다.

     

    int

     - int는 Java에서 정수 연산을 하기 위해 기본 타입이다.

     - 따라서, byte 혹은 short의 변수가 연산을 하면 연산의 결과는 int가 된다.

     

    long
    long l = 2147483648;   // 컴파일 에러 발생
    
    long l = 2147483648L;   // 정상 컴파일

     - 수치가 큰 데이터를 다루는 프로그램(은행 및 우주와 관련된 프로그램)에서 주로 사용된다.

     - long 타입의 변수를 초기화할 때는 정수 값 뒤에 알파벳 L을 붙여서 long 타입의 정수 데이터임을 명시해줘야 한다.

     - 만약 int의 저장 범위를 넘는 정수 값에서 L을 붙이지 않는다면 컴파일 에러가 발생한다.

     

    float, double
    float f = 1234.567;   // 컴파일 에러가 발생합니다.
    
    float f = 1234.567F; // 정상 컴파일

     - 실수를 가수와 지수 형식으로 저장하는 부동소수점의 방식을 사용하는 타입이다.

     - 가수를 표현하는 데 있어 double 형이 float 형보다 표현 가능 범위가 더 크기 때문에, double 형이 보다 정밀하게 표현할 수 있다.

     - Java에서 실수의 기본 타입은 double 형이므로 float 형에는 알파벳 F를 붙여서 float 형임을 명시해야 한다.


    Reference Type (참조형 타입)

    Reference Type의 종류

     

     - Java에서 primitive type을 제외한 타입들이 모두 reference type이다.

     - Class Type, Interface Type, Array Type, Enum Type 등이 존재한다.

     - reference type은 java에서 최상위 클래스인 java.lang.Object 클래스를 상속받는다.

     - 빈 객체를 의미하는 null 값을 가질 수 있지만, null 값으로 초기화된 객체를 컴파일했을 때 에러가 나므로, 변수값을 넣어줘야 한다.

     

     

     - new로 인하여 생성된 객체는 메모리의 Heap 영역에 저장이 되고, Heap 영역에 생성된 객체의 접근을 위하여 Stack 영역에 존재하는 Frame에 일종 포인터인 참조값을 가지고 객체를 제어한다.

     

    728x90

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

    Java - 문자열 클래스  (0) 2022.02.19
    Java - Boxing & Unboxing  (0) 2022.02.19
    Java - 인터페이스  (0) 2021.12.08
    Java - 객체지향언어  (0) 2021.12.07
    Java - 가비지 컬렉션(Garbage Collection)  (0) 2021.11.15

    댓글

Designed by Tistory.