Java 자료형
선수학습(1개)
요약
Java의 자료형을 정리합니다. 기본형(int, long, float, double, char, boolean)과 참조형(String, 배열, 객체)의 차이, 형변환(casting)까지 쌩기초부터 설명합니다.
자료형이란? 쌩기초
자료형(data type)은 변수에 어떤 종류의 데이터를 저장할지 정하는 것입니다.
정수를 저장할 때와 소수점이 있는 수를 저장할 때 필요한 메모리 크기가 다릅니다. 자료형을 통해 "이 변수에는 이런 종류의 데이터를 저장할 거야"라고 미리 알려주는 것입니다.
Java의 자료형은 크게 기본형과 참조형으로 나뉩니다.
- 기본형(primitive type): 값 자체를 저장합니다.
int,double,char,boolean등 8가지 - 참조형(reference type): 기본형 8가지를 제외한 나머지 자료형입니다.
String, 배열, 클래스 등이 여기에 속합니다.

자료형 핵심 정리
메모리(memory)는 프로그램이 실행될 때 데이터를 잠시 보관하는 공간입니다. 바이트(byte)는 그 메모리 크기를 나타내는 단위입니다. 크기가 클수록 더 크거나 정밀한 값을 저장할 수 있습니다.
| 분류 | 자료형 | 저장하는 데이터 | 크기 |
|---|---|---|---|
| 정수형 | byte | 작은 정수 (-128 ~ 127) | 1바이트 |
| 정수형 | short | 중간 정수 (-32,768 ~ 32,767) | 2바이트 |
| 정수형 | int | 정수 (가장 기본) | 4바이트 |
| 정수형 | long | 큰 정수 (int 범위의 약 43억 배) | 8바이트 |
| 실수형 | float | 소수점이 있는 수 | 4바이트 |
| 실수형 | double | 소수점이 있는 수 (더 정확하게 저장) | 8바이트 |
| 문자형 | char | 문자 하나 | 2바이트 |
| 논리형 | boolean | 참(true) / 거짓(false) | 1바이트 |
정수형 자료형 쌩기초
정수형은 소수점이 없는 수를 저장합니다.
int — 가장 기본적인 자료형
int는 integer(정수) 의 약자입니다. Java에서 가장 많이 사용하는 자료형입니다.
크기는 4바이트이며, 약 -21억부터 +21억까지의 수를 저장할 수 있습니다.
long — int보다 큰 정수
long은 int보다 더 큰 정수를 저장할 때 사용합니다. 크기는 8바이트입니다.
byte와 short
byte(1바이트)와 short(2바이트)는 int보다 작은 정수형입니다. byte와 short의 범위를 외울 필요는 없지만, byte는 파일 입출력에서 가끔 등장합니다.
실수형 자료형 쌩기초
실수형은 소수점이 있는 수를 저장합니다.
double — 가장 많이 쓰는 실수형
double은 소수점이 있는 수를 저장하는 자료형입니다. 크기는 8바이트이며, 소수점 이하 약 15 ~ 16자리까지 정확합니다.1
Java에서 소수점이 있는 숫자(예: 3.14)를 그냥 쓰면 기본적으로 double 타입으로 처리됩니다.
float — 가벼운 실수형
float는 소수점이 있는 수를 저장하는 자료형입니다.2 크기는 4바이트이며, 소수점 이하 약 6 ~ 7자리까지 정확합니다.
float로 사용하려면 숫자 뒤에 f를 반드시 붙여야 합니다.
정밀도 차이를 직접 비교하면 이렇습니다.
f를 안 붙이면 double로 인식되어 컴파일 에러가 납니다.
| 자료형 | 크기 | 정밀도 | 사용 예시 |
|---|---|---|---|
float | 4바이트 | 소수점 6 ~ 7자리 | 3.14f |
double | 8바이트 | 소수점 15 ~ 16자리 | 3.141592653589793 |
문자형 — char 쌩기초
char는 character(문자) 의 약자입니다. 문자 하나를 저장합니다. 문자를 저장할 때는 작은따옴표(' ')로 감쌉니다.
Java의 char는 2바이트입니다. C언어의 char(1바이트)와 크기가 다릅니다. Java는 유니코드3를 사용하기 때문에 한글도 char 하나에 저장할 수 있습니다.
char와 배열 인덱스 심화
char는 내부적으로 정수이므로, 배열의 인덱스로 사용할 수 있습니다. 예를 들어 'a'는 97번이므로 arr['a']는 arr[97]과 같습니다.
new boolean[256]은 boolean 값을 담는 칸 256개짜리 배열을 새로 만든다는 뜻입니다. new는 메모리에 공간을 새로 만들 때 사용하는 키워드입니다.
이 패턴은 "문자의 등장 여부를 기록"하는 문제에서 자주 사용됩니다.
논리형 — boolean 쌩기초
boolean은 참(true) 또는 거짓(false), 딱 두 가지 값만 저장하는 자료형입니다.
boolean은 어디에 쓰나요?
주로 조건을 판단할 때 사용합니다. if문이나 반복문의 조건식 결과가 boolean입니다.
boolean 배열의 기본값
new boolean[크기]로 boolean 배열을 만들면, 모든 칸이 자동으로 false로 채워집니다. 이것은 Java의 규칙입니다 — boolean 배열을 만들면 항상 false입니다.
이 특성을 이용하면 "방문 여부", "사용 여부"를 추적하는 배열을 쉽게 만들 수 있습니다.
기본형 vs 참조형 기초
Java의 자료형은 기본형 8가지와 나머지 모든 참조형으로 나뉩니다.
| 구분 | 변수에 저장되는 것 | 예시 |
|---|---|---|
| 기본형 | 값 자체 | int x = 5 → x에 5가 저장 |
| 참조형 | 객체의 주소 | String s = "abc" → s에 주소가 저장 |
기본형 8가지: byte, short, int, long, float, double, char, boolean
참조형: String, 배열(int[], boolean[] 등), 클래스로 만든 객체 등 — 기본형 8가지를 제외한 나머지 전부
기본형 변수를 복사하면 값이 복사되고, 참조형 변수를 복사하면 주소가 복사됩니다. 이 차이가 매개변수 전달(함수를 호출할 때 값을 넘기는 방식), 객체 배열 등에서 중요하게 작용합니다. 자세한 내용은 기본형 vs 참조형 페이지를 참고하세요.
형변환 (Casting) 기초
형변환은 한 자료형의 값을 다른 자료형으로 바꾸는 것입니다.
자동 형변환 (묵시적)
좁은 타입 → 넓은 타입으로는 자동으로 변환됩니다. 표현할 수 있는 값의 범위가 더 넓은 쪽으로 변환되므로 데이터 손실이 없습니다.
byte → short → int → long → float → double 순서로 자동 변환됩니다.
long(8바이트)에서 float(4바이트)로 가는 것이 이상해 보일 수 있습니다. 바이트 크기가 아니라 표현할 수 있는 값의 범위 기준이기 때문입니다. float는 바이트는 작아도 소수점 덕분에 long보다 훨씬 넓은 범위의 수를 표현할 수 있습니다.
char도 int로 자동 변환됩니다. 변환 순서 상 char는 int 단계에서 합류합니다. 'A'는 65이므로:
강제 형변환 (명시적)
넓은 타입 → 좁은 타입으로 바꿀 때는 (자료형) 을 직접 써서 변환해야 합니다. 소수점 이하가 잘리는 등 데이터 손실이 생길 수 있습니다.
| 변환 방향 | 방법 | 예시 | 결과 |
|---|---|---|---|
int → double | 자동 | double b = 10; | 10.0 |
double → int | 강제 | int a = (int) 3.14; | 3 |
char → int | 자동 | int n = 'A'; | 65 |
int → char | 강제 | char c = (char) 65; | 'A' |