[CS-JAVA]Primitive type & Reference type

지영·2023년 7월 28일
0

CS

목록 보기
50/77
post-thumbnail
post-custom-banner

1. Primitive type(기본형 타입)

  • 자바에서 총 8가지의 Primitive type을 정의하고 있음
  • 기본형 타입은 반드시 먼저 선언(Declared)하고 사용해야 함
  • OS에 따라 자료형의 길이가 변하지 않음
  • 비객체 타입, 따라서 null값을 가지지 못하며 null을 넣고 싶다면 Wrapper Class를 활용함.
  • 스택(Stack)메모리에 저장됨.

    🔎 Wrapper Class 란?

    Boxing : 기본타입 -> 래퍼 클래스
    Unboxing : 래퍼 클래스 -> 기본타입

    프로그램에 따라 기본 타입의 데이터를 객체로 취급해야 하는 경우가 있기 때문에, 기본 타입의 데이터를 먼저 객체로 변환한 후 작업을 수행해주는 것을 Wrapper(래퍼) Class라고 한다. 각각의 타입에 해당하는 데이터를 인수로 전달받아, 해당 값을 가지는 객체로 만들어 준다.

    단, Boxing이 제공된다 하더라도 추가 연산이 들어가기 때문에 프로그램 성능이 안좋아질 수 있다! 따라서 불필요한 Auto Casting은 없도록 해야 한다.

1.1 기본형 타입의 종류

  • boolean

    • 기본값은 false이며 참, 거짓을 저장해주는 타임
    • 두가지 표현값만 가지므로 가장 크기가 작음
    • 데이터를 다루는 최소단위가 1byte이므로 boolean의 메모리크기도 1byte임
  • byte

    • 이진데이터를 다루는데에 사용되는 타입
  • short

    • C언어와의 호환을 위해 사용되는 타입
  • int

    • 정수 연산을 하기 위한 기본 타입.
  • long

    • 수치가 큰 데이터를 다루는 프로그램(은행 및 우주와 관련된 프로그램)에서 주로 사용됨
    • 초기화 시, 정수값 뒤에 L을 붙여야 long타입 정수 데이터임을 인식할 수 있음
      예시) long l = 21465789354L;
  • float, double

    • 실수를 가수와 지수 형식으로 저장하는 부동소수점 방식으로 저장
    • 가수를 표현하는데에 있어서 double형이 float형보다 표현 가능 범위가 크므로 double혀이 보다 정밀하게 표현됨.
    • 자바에서는 실수의 기본 타입이 double형임. 따라서 float형도 초기화 시, 실수값 뒤에 F를 붙여야 float형이라는 것을 인식할 수 있음
      예시) float f = 1234.658F;

    2. Reference type(참조형 타입)

  • 기본형 타입을 제외한 타입이 참조형 타입에 속함

  • 자바의 최상인 java.lang.Object클래스를 상속하는 모든 클래스를 지칭함

  • new로 인해 생성되는 것은 Heap영역에 생성되고, Garbage Collector가 돌면서 메모리를 해제함.

  • 빈 객체를 의미하는 null이 존재. (단, 객체나 배열을 null값으로 받으면 NullPointException이 발생하므로 변수 값을 넣어주어야 함)

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

  • 종류 : Class type(클래스 타입), Interface type(인터페이스 타입), Array type(배열 타입), Enum type(열거 타입)이 있음

    📍 String Class

    참조형에 속하지만 사용은 기본형처럼 사용함.
    따라서 기본형 타입처럼 불변(immutable)한 객체
    물론 String 클래스의 값을 변경하는 메소드가 있음 -> 새로운 String 클래스를 만들어서 바꾸는 것처럼 보이는 것임.
    값의 비교는 ==가 아닌, .equals() 메소드로 사용됨

profile
꾸준함의 힘을 아는 개발자📍
post-custom-banner

0개의 댓글