Java Type

2023. 3. 31. 13:15·📘 Backend/Java

📘 타입

어떤값의 유형 및 종류를 의미하며 타입에 따라 값이 차지하는 메모리 크기와, 값이 저장되는 방식 결정


값이 차지하는 메모리 공간의 크기

  • 정수형 타입의 데이터 = 4byte
  • 문자형 타입의 데이터 = 1byte

값이 저장되는 방식

  • 값을 그대로 저장하는 기본타입, 저장값을 임의의 메모리 공간에 저장후, 그 메모리 공간의 주소를 저장하는 참조타입

기본타입(primitive type)

  • 값을 저장할때, 데이터의 실제 값이 저장됨.
  • 정수(byte,short,int,long) , 실수(float,double) , 문자타입(char) , 논리 타입(boolean)

참조타입(reference type)

  • 값을 저장할때, 데이터가 저장된 곳을 나타내는 주소값이 저장됨.
  • 객체의 주소를 저장, 8개의 기본형을 제외한 나머지 모든타입

의사코드로 표현한 예시

img

  • 위 예시에서 참조타입변수는 저장하고자 하는것이 존재하는 위치를 저장함.
  • 객체를 어떤 변수에 저장한다면 그 변수에는 객체가 존재하는 메모리 주소를 값으로 가짐
  • 즉, 객체의 주소값이 변수에 저장되어있음

실제코드로 표현한 예시

img


출력값

> Task :Test.main()

1

java.lang.Object@626b2d4a <- 참조타입변수의 객체에 저장된 메모리 주소


정수 타입

byte, short, int, long


정수형의 오버 & 언더플로우

ex) byte type = -128 ~ 127

  • 127 이상으로 값이 넘어갈경우 오버플로우
  • -128 이하로 내려갈경우 언더플로우

최대값인 127을 넘어갈경우 최소값인 -128로 순환됨

최소값인 -128을 내려갈경우 최대값인 127로 순환됨


실수 타입

float, double

img


실수타입의 오버 & 언더플로우

  • 값이 음의 최소범위 또는 양의 최대범위를 넘어갔을때 발생, 이때 값은 무한대
  • 값이 음의 최대범위 또는 양의 최소범위를 넘어갔을때 발생, 이때 값은 0

img


논리 타입

boolean

img


문자 타입

char

  • 문자 타입의 변수를 선언하면 해당 변수에 오직 하나의 문자형 리터럴을 지정할 수 있음.
  • 문자형 리터럴은 ' '(작은 따옴표)만 사용가능

ex) 문자형 char letter1 = 'a';

숫자를 문자형 변수에 할당 char letter = 65;

java는 문자를 유니코드로 저장 a -> 유니코드 a의 숫자반환

65 -> 유니코드 65의문자 반환


타입변환

boolean을 제외한 기본타입 7개는 타입 변환가능하며, 자동/수동 타입변환 방법이 있음


자동타입변환

바이트 크기가 작은 타입에서 큰타입으로 변환할 때 (ex: byte -> int)

덜 정밀한타입에서 더 정밀한 타입으로 변환할 때 (ex: int -> float)


float이 정수형보다 뒤에있는 이유는 float으로 표현할 수 있는 값이 모든 정수형보다 더 정밀하기 때문

byte(1) - short(2)/char(2) - int(4) - long(8) - float (4) -> double(8)


수동타입변환

  • 바이트 크기가 큰타입에서 작은타입으로 자동변환 X
  • 큰 -> 작은 = 자동변환불가,캐스팅이라고 불림

img

'📘 Backend > Java' 카테고리의 다른 글

Java Operator & I/O  (0) 2023.03.31
Java Final  (0) 2023.03.31
Java String Class  (0) 2023.03.31
Java 예약어  (0) 2023.03.31
Java 기초 (Method, Variable)  (0) 2023.03.31
'📘 Backend/Java' 카테고리의 다른 글
  • Java Final
  • Java String Class
  • Java 예약어
  • Java 기초 (Method, Variable)
신건우
신건우
조용한 개발자
  • 신건우
    우주먼지
    신건우
  • 전체
    오늘
    어제
    • 분류 전체보기 (422)
      • 📘 Frontend (71)
        • Markup (1)
        • Style Sheet (2)
        • Dart (8)
        • Javascript (12)
        • TypeScript (1)
        • Vue (36)
        • React (2)
        • Flutter (9)
      • 📘 Backend (143)
        • Java (34)
        • Concurrency (19)
        • Reflection (1)
        • Kotlin (29)
        • Python (1)
        • Spring (42)
        • Spring Cloud (5)
        • Message Broker (5)
        • Streaming (2)
        • 기능 개발 (5)
      • 💻 Server (6)
        • Linux (6)
      • ❌ Error Handling (11)
      • 📦 Database (62)
        • SQL (31)
        • NoSQL (2)
        • JPQL (9)
        • QueryDSL (12)
        • Basic (4)
        • Firebase (4)
      • ⚙️ Ops (57)
        • CS (6)
        • AWS (9)
        • Docker (8)
        • Kubernetes (13)
        • MSA (1)
        • CI & CD (20)
      • 📚 Data Architect (48)
        • Data Structure (10)
        • Algorithm (8)
        • Programmers (17)
        • BaekJoon (5)
        • CodeUp (4)
        • Design Pattern (4)
        • AI (0)
      • ⚒️ Management & Tool (8)
        • Git (7)
        • IntelliJ (1)
      • 📄 Document (10)
        • Project 설계 (6)
        • Server Migration (3)
      • 📄 책읽기 (2)
        • 시작하세요! 도커 & 쿠버네티스 (2)
      • 🎮 Game (4)
        • Stardew Vally (1)
        • Path of Exile (3)
  • 블로그 메뉴

    • 링크

      • Github
    • 공지사항

    • 인기 글

    • 태그

      GStreamer #Pipeline
      React #Markdown
      Lock #Thread #Concurrency
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.0
    신건우
    Java Type
    상단으로

    티스토리툴바