Java

[Java] 자바의 자료형

DH_0518 2024. 1. 24. 23:42

Java에는 다양한 데이터 종류가 있고, 이는 원시형(primitive type)과 참조형(reference type)으로 나뉜다. 원시형과 참조형 데이터는 어떤게 존재하는지와, 각 데이터의 특징을 알아보자

 

 

원시 자료형 (Primitive Type)

 

 

Primitive Type 특징

  • 종류
    • Java에는 총 8가지의 원시 자료형이 존재한다 (boolean, char, long, int, short, byte, double, float)
  • 쓰임
    • 데이터를 저장하기 위해 사용되는 자료형을 의미한다
  • 크기
    • 1 byte ~ 8 byte까지 존재
    • 데이터를 다루는 최소 단위가 1 byte이므로, 이보다 더 작을 수는 없다
  • 사용
    • 사용하기 전에 반드시 선언(declared) & 초기화(initialized)를 하고 사용해야한다
  • null 처리
    • "비객체" 타입으로, 선언될 때 변수에 객체가 아닌 "실제 값"을 가진다. 따라서 null이 불가능하다
      (null 자체가 참조형 변수가 어떠한 객체도 가리키고 있지 않음을 나타내기 때문)
    • null을 넣고싶다면 Wrapper Class를 활용해야한다
  • 저장 위치
    • 선언시에 "실제 값"이 할당되므로, 스택 메모리에 저장된다

 

Primitive Type 8종류

분류 타입 크기 기본값 범위
정수형 byte 1 byte 0 -128 ~ 127
short 2 byte 0 -32768 ~ 32767
int 4 byte 0 -2147483648 ~ 2147483647
long 8 byte 0L -9223372036854775808 ~ 9223372036854775807
실수형 float 4 byte 0.0F -1.4 * 10^(45) ~ 3.4 * 10^(38)
double 8 byte 0.0 -4.9 * 10^(324) ~ 1.8 * 10^(308)
문자형 char 4 byte '\u0000' 0 ~ 65535 (\u0000 ~ \uffff)
논리형 boolean 1 byte false true, false
  • int : 자바에서 정수 연산을 하기 위한 기본 타입으로, short 혹은 byte의 변수가 연산을 하면 연산 결과는 int가 된다
  • long : 초기화할 때 정수값 뒤에 L을 붙여야 한다. 만약 int 범위를 넘어가는 정수에 L을 붙이지 않는다면 컴파일 에러가 발생한다
  • float : 자바에서 실수의 기본형은 double이므로, float를 사용하기 위해서는 실수값 뒤에 F를 붙여야 한다
  • Wrapper Class : 원시형을 '객체(Object)'로 다루기 위해서 객체화 시키는 클래스로, 원시형을 클래스로 감싼다고 생각하면 된다

 

 

 

 

 

참조 자료형 (Reference Type)

 

 

Reference Type 특징

  • 종류
    • java.lang.Object를 상속 받은 객체를 말한다
    • Java에서 원시형을 제외한 모든 타입들이 Reference Type이다
    • Class Type, Interface Type, Array Type, Enum Type으로 나뉜다
  • 쓰임
    • 객체를 생성할 때 사용되는 자료형을 의미한다
  • null 처리
    • 빈 객체를 의미하는 null을 할당할 수 있다
    • null을 넣을 수 있지만, 런타임시에 NullPointException이 발생할 수 있으므로 유의해야한다
  • 저장 위치
    • 선언시 Reference Type은 Heap 영역에 생성되고, 이를 바라보는 변수들은 Stack 영역에 저장된다

https://bcp0109.tistory.com/360

 

 

Reference Type의 대표적인 종류

분류 타입
Class Type 사용자 정의 Class
String
ArrayList
HashSet
Interface Type 사용자 정의 Interface
List
Set
Queue
Array Type int []
String []
Enumeration Type 사용자 정의 Enum
  • Interface : Class와 다르게 java.lang.Object를 상속받지 않는다
  • String
    • 참조형에 속하지만 기본형처럼 사용한다
    • 불변하는 객체이다
    • 비교시 .equals()를 사용해야한다 ( equals는 "값"을 비교, ==는 memory를 비교하기 때문)

 

 

 

 

 

 

복습 Question

  • boolean은 실제로 1 bit면 충분한데 왜 1 byte일까?
  • primitive type이 null을 할당할 수 없는 이유가 뭘까?
  • 두 개의 String 객체를 비교할 때, '=='가 아닌 'equals()'를 사용해야하는 이유는?

 

 

 

 

Reference

 

[Java] 자료형(Data Type) 이해하기 : 기본 / 참조 자료형, 래퍼 클래스

해당 글에서는 자료형 중 기본 자료형, 참조 자료형, 래퍼 클래스에 대해 이해하고 각각을 비교하여 이해를 돕기 위한 목적으로 작성을 하였습니다. 1) 기본 자료형(Primitive Data Type) 💡 데이터를

adjh54.tistory.com

 

Primitive type & Reference type | 👨🏻‍💻 Tech Interview

Primitive type & Reference type Goal Primitive type에 대해 설명할 수 있다. Reference type에 대해 설명할 수 있다. Abstract 자바에는 기본형(Primitive type)과 참조형(Reference type)이 있습니다. 일반적인 분류는 다음

gyoogle.dev

 

자바 자료형 정리(Java Data Type) :: JDM's Blog

기초를 탄탄히 하자는 마음으로 이번 포스팅은 자바 자료형Java Data Type에 대한것을 다뤄봅니다. Java Data Type 자바에는 기본형Primitive Type과 참조형Reference Type이 있습니다. 일반적인 분류는 다음처

jdm.kr