티스토리 뷰
Java 자료형 완벽 정리 — 기본형과 참조형 한눈에 보기
자료형은 변수가 어떤 데이터를 저장할 수 있는지를 결정합니다. 본 글에서는 자바의 기본형과 참조형, 그리고 형 변환과 베스트 프랙티스까지 알기 쉽게 정리합니다.
① 자료형이란?
자료형(Data Type)은 변수에 저장할 수 있는 데이터의 형태, 크기, 연산 방법을 정의합니다. 정수, 실수, 문자, 논리값 등 각 타입마다 메모리 크기와 허용 범위가 다릅니다.
// 자료형 예시
int age = 25; // 정수
double height = 175.5; // 실수
boolean isAdult = true; // 논리값
char grade = 'A'; // 문자 (단일 문자)
② 자바 자료형 분류
기본형 (Primitive Type)
값 자체를 저장합니다. byte, short, int, long, float, double, char, boolean (총 8개).
참조형 (Reference Type)
객체의 주소(참조값)를 저장합니다. String, 배열, 클래스, 인터페이스, 열거형 등 기본형을 제외한 모든 타입이 해당됩니다.
③ 기본형(Primitive) 상세 표
| 자료형 | 크기 | 범위(개략) | 예시 | 비고 |
|---|---|---|---|---|
byte | 1 byte | -128 ~ 127 | byte b = 120; | 아주 작은 정수, 파일 IO 등 |
short | 2 byte | 약 ±32K | short s = 30000; | 임베디드/메모리 제약 |
int | 4 byte | 약 ±21억 | int n = 42; | 가장 일반적인 정수 |
long | 8 byte | 아주 큰 정수 | long id = 123456789L; | L 접미사 필요 |
float | 4 byte | 단정도 실수 | float f = 3.14F; | F 접미사 필요 |
double | 8 byte | 배정도 실수 | double d = 3.14159; | 실수의 기본형 |
char | 2 byte | 유니코드 문자 1개 | char c = '가'; | 문자 리터럴은 작은따옴표 |
boolean | (구현 의존) | true / false | boolean ok = true; | 논리 연산, 분기 |
// 기본형 선언 & 초기화
int count = 10;
long total = 10_000_000L;
double rate = 0.075;
boolean valid = false;
char currency = '₩';
④ 참조형(Reference) 이해하기
참조형 변수는 객체가 저장된 힙(Heap)의 주소를 보관합니다. 변수 자체는 주소를, 실제 데이터는 힙 영역에 존재합니다.
// 대표적인 참조형
String name = "홍길동"; // 문자열 객체
int[] numbers = {1, 2, 3}; // 배열
List<String> list = new ArrayList<>();
| 구분 | 기본형 | 참조형 |
|---|---|---|
| 저장 내용 | 값 자체 | 객체의 주소(참조) |
| 메모리 | 주로 스택 | 주소는 스택, 객체는 힙 |
| 초기값(필드) | 0, 0.0, false 등 | null |
| 예시 | int, double, char | String, 배열, 클래스 |
⑤ 형 변환(Type Casting)
자동 형 변환 (묵시적, Widening)
표현 범위가 넓은 타입으로의 변환은 자동으로 이뤄집니다.
int num = 10;
double d = num; // int → double 자동 변환
강제 형 변환 (명시적, Narrowing)
표현 범위가 좁은 타입으로 바꿀 때는 (타입)을 명시해야 하며, 데이터 손실이 발생할 수 있습니다.
double pi = 3.14;
int n = (int) pi; // 3 (소수부 손실)
문자열 ↔ 숫자 변환
// 문자열 → 숫자
int x = Integer.parseInt("123");
double y = Double.parseDouble("3.14");
// 숫자 → 문자열
String s1 = String.valueOf(123);
String s2 = 3.14 + ""; // 덧셈 연산으로 문자열화 (권장 X, 가독성↓)
⑥ Wrapper 클래스 & 기본형 vs 참조형
각 기본형에는 대응되는 Wrapper 클래스가 있습니다. 컬렉션 등 객체만 다루는 API와 함께 사용할 때 유용합니다.
| 기본형 | Wrapper | 예시 |
|---|---|---|
int | Integer | Integer.valueOf(10) |
long | Long | Long.valueOf(10L) |
double | Double | Double.valueOf(3.14) |
char | Character | Character.valueOf('A') |
boolean | Boolean | Boolean.TRUE |
오토박싱/언박싱
List<Integer> list = new ArrayList<>();
list.add(10); // int → Integer (오토박싱)
int val = list.get(0); // Integer → int (언박싱)
⑦ 실무 팁 & 베스트 프랙티스
- 의미 있는 변수명 사용:
cnt보다orderCount. - 기본형 우선: null 필요 없고 성능이 중요한 경우 기본형 사용.
- 자료형 범위 고려: 금액/정밀도는
double대신BigDecimal고려. - 지역 변수는 반드시 초기화: 초기화 전 읽기는 컴파일 오류.
- 형 변환 시 손실 주의: narrowing 변환은 의도적으로만 사용.
⑧ 자주 묻는 질문(FAQ)
Q1. 자료형이 다르면 자동으로 변환되나요?
범위가 넓은 쪽으로는 자동 변환되지만(int → double), 그 반대(double → int)는 명시적 캐스팅이 필요하며 데이터 손실이 발생합니다.
Q2. 지역 변수와 필드의 기본값은 같나요?
아닙니다. 지역 변수는 자동 초기화되지 않으므로 직접 초기화해야 하며, 필드(멤버 변수)는 타입에 따라 기본값(숫자 0, 불리언 false, 참조형 null)이 부여됩니다.
Q3. 실수 계산 오차를 피하려면?
금융/정밀 계산은 double 대신 BigDecimal을 사용하고, 적절한 MathContext와 반올림 모드를 지정하세요.
마무리
자료형은 자바의 기초이자 품질과 성능에 직접 영향을 주는 핵심 요소입니다. 본 글에서 기본형·참조형, 형 변환, Wrapper까지 흐름을 잡았다면, 이어서 컬렉션과 제네릭, 불변 객체, 레코드 등으로 확장해 보세요. 🚀
'Programming > JAVA' 카테고리의 다른 글
| JAVA 한글 인코딩 글자별 변환 (0) | 2020.12.24 |
|---|---|
| JAVA split 시 공백 포함 (0) | 2019.02.11 |
| json-lib 2.3과 필요 의존 라이브러리 (0) | 2018.11.06 |
| JEUS , WebtoB 기본 (0) | 2015.01.02 |
| BASE64 인코딩 디코딩 (0) | 2014.12.18 |
- Total
- Today
- Yesterday
- 0으로
- 트위터 타임라인 위젯
- 오라클 복구
- html
- Oracle
- jQuery
- IE는언제없어지나
- 시간비교
- 대체어
- Java
- this
- 오라클 락
- javascript
- 트위터 위젯
- 오라클
- oracle 줄바꿈
- 로그초기화
- 음수를
- lock
- IE모드
- 사용자삭제
- jeus
- internal error
- 웹투비
- 락걸림
- 명령어
- 자바스크립트
- 시간지정
- webtob
- 오라클 세션
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |