티스토리 뷰

반응형
Java
기초
자료형

Java 자료형 완벽 정리 — 기본형과 참조형 한눈에 보기

자료형은 변수가 어떤 데이터를 저장할 수 있는지를 결정합니다. 본 글에서는 자바의 기본형참조형, 그리고 형 변환과 베스트 프랙티스까지 알기 쉽게 정리합니다.

자료형이란?

자료형(Data Type)은 변수에 저장할 수 있는 데이터의 형태, 크기, 연산 방법을 정의합니다. 정수, 실수, 문자, 논리값 등 각 타입마다 메모리 크기와 허용 범위가 다릅니다.

// 자료형 예시
int age = 25;             // 정수
double height = 175.5;    // 실수
boolean isAdult = true;   // 논리값
char grade = 'A';         // 문자 (단일 문자)
Tip. 자료형을 올바르게 선택하면 메모리 효율연산 정확도를 모두 잡을 수 있습니다.

자바 자료형 분류

기본형 (Primitive Type)

값 자체를 저장합니다. byte, short, int, long, float, double, char, boolean (총 8개).

참조형 (Reference Type)

객체의 주소(참조값)를 저장합니다. String, 배열, 클래스, 인터페이스, 열거형 등 기본형을 제외한 모든 타입이 해당됩니다.

기본형(Primitive) 상세 표

자료형크기범위(개략)예시비고
byte1 byte-128 ~ 127byte b = 120;아주 작은 정수, 파일 IO 등
short2 byte약 ±32Kshort s = 30000;임베디드/메모리 제약
int4 byte약 ±21억int n = 42;가장 일반적인 정수
long8 byte아주 큰 정수long id = 123456789L;L 접미사 필요
float4 byte단정도 실수float f = 3.14F;F 접미사 필요
double8 byte배정도 실수double d = 3.14159;실수의 기본형
char2 byte유니코드 문자 1개char c = '가';문자 리터럴은 작은따옴표
boolean(구현 의존)true / falseboolean 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, charString, 배열, 클래스
주의. 지역 변수는 자동 초기화되지 않습니다. 사용 전에 반드시 초기화해야 합니다.

형 변환(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예시
intIntegerInteger.valueOf(10)
longLongLong.valueOf(10L)
doubleDoubleDouble.valueOf(3.14)
charCharacterCharacter.valueOf('A')
booleanBooleanBoolean.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
링크
«   2025/11   »
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
글 보관함