그해
그래도해야지
그해
  • 그래도 해야지 (71)
    • Java (26)
    • Spring (8)
    • Golang (3)
    • CS (0)
      • 서버 (9)
      • 네트워크 (4)
      • 운영체제 (1)
      • WEB (0)
      • 데이터베이스 (6)
      • 자료구조 (1)
      • 보안 (3)
      • 알고리즘 (9)
    • 삽질 (0)
    • 회고 및 생각 (0)
hELLO · Designed By 정상우.
그해

그래도해야지

Java

원시타입(Primitive type) vs 참조타입(Reference type)

2023. 2. 17. 15:24

데이터 타입이란 해당 데이터가 메모리에 어떻게 저장되고, 어떻게 처리되어야하는지를 알려준다.

자바에서 타임은 크게 Primitive type, Reference type 두가지로 나뉜다.

Primitive Type(기본형 타입)

  • 자바에서의 기본 타입은 모두 8종류가 제공되며, 크게 정수형, 실수형, 문자형, 논리형으로 나뉜다.
  • 기본값이 존재하기때문에 Null이 존재하지 않는다.
  • 실제 연산에 사용하는 값들을 말한다ㅣ
  • 컴파일 시점에 담을 수 있는 크기를 벗어나면 컴파일 에러가 발생한다.
  • 실제 값을 저장하는 공간으로 Stack에 저장된다.

1. 정수형 타입

  • 부호를 가지며, 소수가 없는 수를 의미한다.
  • byte(1byte), short(2byte) ,int(4byte), long(8byte)
  • 주의해야할 점은 데이터 타입을 결정할때는 사용하고자는 하는 데이터의 최대 크기를 고려해야한다. 해당 타입이 표현할수 있는 범위를 벗어난 데이터를 저장하면 오버플로우(overflow)가 발생해 전혀 다른 값이 저장되기 때문이다.
    • 오버플로우? : 컴퓨터의 정수 연산의 계산 결과가 허용 범위를 초과할 때 발생하는 오류

2. 실수형 타입

  • 소수점을 가지며, 정수보다 더 넓은 표현 범위를 가진다.
  • float(4byte), double(8byte)

3. 문자형 타입

  • 작은 정수나 문자 하나를 표현할 수 있는 타입을 의미한다.
  • char(2byte)
  • 컴퓨터는 2진수밖에 인식하지 못해서 문자도 숫자로 표현해야 인식한다.
  • 참고로 자바는 유니코드를 사용해 문자를 표현한다. 이 유니코드는 각 나라의 모든 언어를 표현할 수 있으며 문자하나를 16비트로 표현하므로 , 총 2의 16승 65536개의 문자를 표현할 수 있다.

4. 논리형 타입

  • 참(true)과 거짓(false) 중 한가지 값만을 가질 수 있는 타입을 의미한다.
  • boolean(1byte)
  • 기본값은 false이며 , 기본 타입 중 가장 작은 크기인 1바이트의 크기를 가진다.

Reference Type(참조형 타입)

  • 기본형 타입을 제외한 타입들이 모두 참조형타입이다.
  • stack에는 변수에 주소값을 저장하고, 실제 데이터는 heap에 저장한다.
  • 클래스를 정의하고 new 키워드를 통해 객체를 생성할수 있다.
  • 참조형 변수끼리는 연산이 되지 않고 실제로는 기본형끼리의 연산만 가능함.
  • 빈 객체를 의미하는 Null이 존재한다. 크게 나눠보자면,
    • 문자열(String)
    • 배열(array[])
    • 열거(enum)
    • 클래스(class)
    • 인터페이스 (interface) etc..

 

즉, primitive type은 스택영역에서 직접 값을 갖고 있지만, reference type은 스택영역에서 힙 영역 객체의 주소를 가진다.

'Java' 카테고리의 다른 글

[JAVA] 다차원 배열  (0) 2023.12.06
[Java] String 배열  (0) 2023.12.06
[Java] 배열(Array)  (1) 2023.12.06
객체지향 설계 5원칙 - SOLID  (0) 2023.02.23
JVM과 자바의 실행 과정  (0) 2023.02.16
    'Java' 카테고리의 다른 글
    • [Java] String 배열
    • [Java] 배열(Array)
    • 객체지향 설계 5원칙 - SOLID
    • JVM과 자바의 실행 과정
    그해
    그해
    그래도 공부는 해야지

    티스토리툴바