Java의 자료형

이명렬·2024년 1월 27일

Java

목록 보기
4/4

기본자료형(Primitive Types)

기본 자료형은 고정된 메모리 크기를 갖고, 스택 메모리에 값을 직접 저장함

  1. 정수형
    • byte : 데이터 스트림, 파일 처리 등에서 바이트 단위 데이터 관리에 사용
      8비트 정수, 값의 범위[ -128 ~ 127 ],
    • short : 8비트보다 큰 범위의 정수 처리에 사용
      16비트 정수, 값의 범위 [ -32,768 ~ 32,767 ]
    • int : 일반적인 정수 연산에 가장 널리 사용됨
      32비트 정수, 값의 범위 [ 약 -2.1억 ~ 2.1억 ](기본 정수형)
    • Long : int 범위를 초과하는 큰 정수 값 처리에 사용
      64비트 정수, 값의 범위 [ 약 -9.2경 ~ 9.2경 ].(L 접미사 사용)
  1. 실수형
    • float : 메모리를 적게 사용하면서 광범위한 범위의 실수를 처리할 때 사용
      32비트 실수.(F 접미사 사용), 값의 범위 [ 대략 ±3.4E38 ], 정밀도 [약 6~7자리 10진수]
    • double : 기본 실수형으로, 높은 정밀도가 필요한 실수 계산에 사용
      64비트 실수.(기본 실수형), 값의 범위 [ 대략 ±1.7E308 ], 정밀도 [약 15자리 10진수]
  1. 문자형
    • char : 유니코드 문자 표현
      16비트 유니코드 문자
  1. 논리형
    • boolean : 조건문, 논리 연산에 사용
      논리적 값( true 또는 false ),
      JVM에 따라 크기가 다름 (보통 1비트 사용하지만, 실제 메모리 할당은 JVM에 의존적임)

참조 자료형(Reference Types)

참조 자료형은 객체의 참조(주소)를 저장합니다. 참조 자료형에는 클래스, 인터페이스, 배열 등이 포함

1.클래스(Class)

  • 예시 : String, Integer, 사용자 정의 클래스
  • 작동 방식 : 객체의 참조(주소)를 저장. 객체는 힙 메모리에 저장됨.
  • 특징 : 객체 지향 프로그래밍의 기본 단위. 메소드와 상태(필드)를 포함할 수 있음.

2.인터페이스(Interface)

  • 예시 : List, Map, Set
  • 작동 방식 : 구현된 클래스의 참조를 가질 수 있음.
  • 특징 : 특정 기능을 강제하는 메소드 시그니처 집합을 제공함.
  1. 배열(Array)
  • 예시 : int[], String[]
  • 작동 방식 : 동일한 타입의 데이터를 연속된 메모리 공간에 저장함.
  • 특징 : 고정된 크기를 가지며, 각 요소는 인덱스로 접근할 수 있음.

기본 자료형 vs 참조 자료형

  1. 메모리 사용 :
    • 기본 자료형 : 스택 메모리에 값을 직접 저장함
    • 참조 자료형 : 힙 메모리에 객체를 저장하고 스택에는 참조(주소)를 저장함
  1. 기본값 :
    • 기본 자료형 : 0, false, '\u0000'(char) 등의 기본값을 가짐
    • 참조 자료형 : 기본값이 null임
  1. 처리 속도
    자바에서 기본 자료형 & 참조 자료형 간 처리 속도 차이는
    메모리 할당, 접근 방식, 그리고 가비지 컬렉션과 같은 요소들에 기반을 둠
  1. 메모리 할당 및 접근

    • 기본 자료형 :
      값이 스택 메모리에 직접 저장, 이는 메모리 할당과 접근이 매우 빠르다는 것을 의미
      스택 메모리는 컴파일 시간에 크기가 결정되며, 런타임 시 빠른 할당과 접근이 가능
    • 참조 자료형 :
      객체의 참조(주소)가 스택 메모리에 저장 실제 객체는 힙 메모리에 할당
      힙 메모리는 런타임에 동적으로 할당 되며 객체에 접근할 때마다 참조를 통해 힙 메모리의 주소를 탐색해야함
      이 과정은 기본 자료형에 비해 상대적으로 더 많은 시간을 소요함
  1. 가비지 컬렉션

    • 기본 자료형 :
      스택 메모리에 저장되므로, 메소드가 종료될 때 자동으로 제거됨(가비지 컬렉션의 대상이 되질 않음)
    • 참조 자료형 :
      힙 메모리에 할당된 객체는 가비지 컬렉터에 의해 관리됨.
      객체가 더 이상 필요 없을 때 메모리를 회수하는 과정이 필요 이는 추가적인 오버헤드를 발생 시킬 수 있음
  1. 캐시 효율성

    • 기본 자료형 :
      작은 크기와 스택 메모리의 특성으로 인해 CPU 캐시를 효율적으로 사용할 수 있음 (이는 떠 빠른 처리 속도로 이어짐)
    • 참조 자료형 :
      힙 메모리에 객체를 할당하고 참조를 통해 접근하는 방식은 메모리 캐시 효율성이 낮아질 수 있음.
      객체가 크거나 복잡할 경우 이 효율성은 더욱 감소함
  1. 데이터 크기

    • 기본 자료형 :
      고정된, 상대적으로 작은 데이터 크기를 갖음

    • 참조 자료형 :
      객체에 따라 데이터 크기가 크고 가변적일 수있음, 이는 메모리 사용량과 처리 속도에 영향을 미침

자동 박싱과 언박싱(Auto-Boxing and Unboxing)

각 기본 자료형에는 해당하는 래퍼 클래스가 존재
예시 : int 의 래퍼 클래스는 Integer,double의 래퍼 클래스는 Double
이런 래퍼 클래스들은 기본 자료형의 값을 객체로 감싸 객체가 필요한 곳에서 사용할 수 있게함

  • 작동방식 : 자바 컴파일러가 자동으로 기본 자료형과 해당래퍼 클래스 간변환을 처리
  • 에시 : int 를 Integer 로 변환하거나 그 반대의 경우 자동으로 처리

0개의 댓글