[JAVA] Primitive type & Reference type

in·2023년 8월 30일
0

JAVA

목록 보기
3/9

자바는 기본형(Primitive type)과 참조형(Reference type)이 있음

📌Java Data Type
Primitive Type
   ㄴ Boolean Type(boolean)
   ㄴ Numeric Type
       ㄴ Integral Type
           ㄴ Integer Type(short, int, long)
           ㄴ Floating Point Type(float, double)
       ㄴ Character Type(char)
Reference Type
   ㄴ Class Type
   ㄴ Interface Type
   ㄴ Array Type
   ㄴ Enum Type
   ㄴ etc.

📌 Primitive Type(기본형 타입)

  • Java에서는 총 8개의 타입을 미리 정의

  • 기본 자료형은 반드시 사용하기 전에 선언(Declared)되어야 함

  • OS에 따라 자료형의 길이가 변하지 않음

  • 비객체 타입 ➡️ null값을 가질 수 없음(null을 넣고싶다면 Wrapper Class 사용)

  • 스택(Stack) 메모리에 저장

    boolean

    1byte
    논리형으로 기본값은 false
    참과 거짓을 저장하는 타입
    가장 크기가 작음

    byte

    1byte
    주로 이진데이터를 다루는데 사용

    short

    C언어와의 호환을 위해 사용(잘 사용하지X)

    int

    4byte
    정수 연산을 하기 위한 기본 타입
    byte, short의 변수가 연산을 하면 결과는 int형

    long

    8byte
    주로 수치가 큰 데이터를 다루는 프로그램에서 사용
    초기화 시 정수 값 뒤에 알파벳 L을 붙여서 long타입임을 알려줘야함(안붙이면 컴파일 에러 발생)

    float, double

    float 4byte / double 8byte
    실수를 가수와 지수 형식으로 저장하는 부동소수점 방식
    가수를 표현하는데 있어 double형이 float형보다 표현 가능 범위가 큼
    실수의 기본 타입은 double형이므로 float형에는 알파벳 F를 붙여서 float형임을 명시해야 함

    📌 Reference Type(참조형 타입)

  • Primitive type을 제외한 나머지 타입들

  • java.lang.Object 클래스를 상속하는 모든 클래스

  • new로 인하여 생성하는 것들은 메모리 영역인 Heap 영역에 생성하고 Garbage Collector가 돌면서 메모리 해제

  • 클래스(class)/인터페이스(interface)/배열(array)/열거(enum) 타입 존재

  • 빈 객체를 의미하는 Null 존재

  • 문법상으로는 에러가 없지만 실행시켰을 때 에러가 나는 런타임 에러가 발생
    ➡️ 객체나 배열을 Null값으로 받으면 NullPointerException이 발생하므로 변수 값 넣어야 함

  • Heap 메모리에 생성된 인스턴스는 메소드나 각종 인터페이스에 접근하기 위해 JVM의 Stack 영역에 존재하는 Frame에 일종의 포인터인 참조값을 가지고 있어 이를 통해 인스턴스 핸들링

📌 String Class

  • 참조형에 속하지만 기본형처럼 사용
  • 불변(immutable)하는 객체
  • 일반적으로 기본형 비교는 == 연산자를 사용하지만 String 객체간 비교는 .equals() 메소드 사용

[참고 자료]

🔗링크1
🔗링크2

0개의 댓글