자료형 (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 |
각 자료형의 크기
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 |