leexx
처음 배우는 마음으로
leexx
전체 방문자
오늘
어제
  • 분류 전체보기 (68)
    • 막개발글 (12)
    • 자바스크립트 JavaScript (17)
    • 우아한테크코스 (3)
      • 프리코스 (3)
    • 타입스크립트 TypeScript (2)
    • 리액트 React (9)
      • 리액트 React (4)
      • ReactQuery (3)
      • ReduxToolkit (1)
    • 스프링 Spring (2)
      • 전체 글 (2)
    • 코틀린 Kotlin (4)
    • 자바 Java (9)
    • 파이썬 Python (3)
      • Selenium (2)
    • SQL (1)
    • 깃허브 GitHub (1)
    • 알고리즘 Algorithm (5)
    • 일상글 (0)

인기 글

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
leexx

처음 배우는 마음으로

자바 Java

[자바의정석] 자료형

2023. 2. 10. 05:09

자료형 (data type)

자료형 이란

  • 값 (data) 의 종류 (type) 에 따라 저장될 공간의 크기와 저장 형식 을 정의한 것임
  • 자료형에는 문자형 (char), 정수형 (byte, short, int, long), 실수형 (float, double) 등이 있음

자료형의 종류

기본형 (Primitive type)

  • 실제 값 (data) 를 저장함, 따라서 기본형의 변수의 type 을 data type 이라고도 함 (물론 type 이 data type 을 포함하는 개념이라 type 이라고 해도 됨)
  • 기본형에는 논리 (boolean), 문자 (char), 정수 (byte, short, int, long), 실수 (float, double) 총 8개의 data type 이 있음
    • 논리형 boolean 은 다른 기본형과의 연산이 불가능하다
    • 정수형 주로 int 가 사용됨, byte 는 이진 데이터를 다룰 때 사용하며, short 는 C 언어와의 호환을 위해 추가되었음
    • 실수형 주로 double 이 사용됨
  1 byte 2 byte 4 byte 8 byte
논리형 boolean      
문자형   char    
정수형 byte short int (default) long
실수형     float double (default)

 

각 data type 의 literal (값)

  data type literal 접미사 비고
논리형 boolean true, false 없음  
문자형 char 'A', 'B', '\n', ' ' '' 는 컴파일 에러
' ' 는 OK
정수형 byte, short, int (default) 123 1. 2진수, 8진수, 16진수 로 표현된
리터럴 저장 가능

2. 구분자를 넣어, 큰 숫자를 편하게 읽을 수 있음
long 123 L, l
실수형 float 123.0F, 123.0f F, f  
double (defualt) 123.0 없음  

 

기본형 정수 타입의 변수에 2진수, 8진수, 16진수 리터럴 을 저장하는 방법

  리터럴 10진수로 나타낸 값
2진수 int binaryNum = 0b10 2
8진수 int octNum = 010 8
16진수 int hexNum = 0x10 16

 

각 자료형의 크기

자바의정석 29페이지

1byte = 8bit

 

크기가 다른 자료형에 값을 넣는다면?

class Hello {
	public static void main(String[] args) {
		short s1 = 32_768; // (X) short 는 -32,768 ~ 32,767 까지 가능
		short s2 = 123f; // (X) 123f 는 float 이며, float 가 short 보다 큼
		short s3 = 123; // O
		double d1 = 123f; // O		
	}
}
# 실행 결과
$  myjava javac Hello.java
Hello.java:3: error: incompatible types: possible lossy conversion from int to short
		short s1 = 32_768; // (X) short 는 -32,768 ~ 32,767 까지 가능
		           ^
Hello.java:4: error: incompatible types: possible lossy conversion from float to short
		short s2 = 123f; // (X) 123f 는 float 이며, float 가 short 보다 큼
		           ^
2 errors
  • 자료형이 집어넣는 값보다 크면 상관없지만, 반대로 자료형보다 넣는 값이 더 크면 안됨
  • 예시
    • short 변수에 long 타입의 literal 을 넣는다 (X), 왜냐하면 short 보다 long 의 범위가 더 크기 때문임
    • short 변수에 byte 타입의 literal 을 넣는다 (O)
    • double 변수에 float 타입의 literal 을 넣는다 (O)
    • float 변수에 double 타입의 literal 을 넣는다 (X), 왜냐하면 float 보다 double 의 범위가 더 크기 때문임

참조형 (Reference type)

  • 기본형과 달리 실제 값 (data) 이 아닌, 메모리 주소 (memory address) 를 값으로 가짐
    • 그래서 참조형 변수의 type 을 data type 이 아닌 type 이라 하는 듯 함
  • 참조형 변수 간에는 연산을 할 수 없음
  • 기본형 8개를 제외한 모든 타입

 

참고 자료

  • 자바의 정석
반응형

'자바 Java' 카테고리의 다른 글

왜 자바 애플릿은 지원이 종료되었을까  (0) 2023.09.22
Java 의 역사와 특징  (0) 2023.09.22
[자바의정석] 배열  (0) 2023.02.12
[자바의정석] 자바개발환경 구축하기  (0) 2023.02.09
Java Bean  (0) 2023.01.16
    '자바 Java' 카테고리의 다른 글
    • Java 의 역사와 특징
    • [자바의정석] 배열
    • [자바의정석] 자바개발환경 구축하기
    • Java Bean
    leexx
    leexx

    티스토리툴바