자바의 데이터 타입 이해하기
자바는 정적 타입 언어로, 모든 변수는 사용하기 전에 데이터 타입을 선언해야 합니다. 자바의 데이터 타입은 크게 두 가지 그룹으로 나뉩니다.
기본형(primitive) 데이터 타입과 참조형(reference) 데이터 타입입니다.
기본형 데이터 타입
데이터 타입 | 크기 | 범위 | 용도 |
---|---|---|---|
byte | 8비트 | -128 ~ 127 | 대용량 배열에서 메모리 효율적 저장 |
short | 16비트 | -32,768 ~ 32,767 | 메모리 절약이 중요한 대용량 배열 |
int | 32비트 | -2^31 ~ 2^31-1 | 정수 값의 기본 선택 |
long | 64비트 | -2^63 ~ 2^63-1 | 큰 정수 값에 사용 |
float | 32비트 | 단일 정밀도 소수점 | 사용 시 ‘f’ 접미사 필요 |
double | 64비트 | 이중 정밀도 소수점 | 소수점 계산의 기본 선택 |
boolean | 1비트 | true 또는 false | 플래그와 조건에 사용 |
char | 16비트 | 0 ~ 65,535 (유니코드) | 문자 저장에 사용 |
1
2
3
4
5
6
7
8
9
|
byte b = 100;
short s = 10000;
int i = 100000;
long l = 100000L; // L 접미사 사용
float f = 234.5f; // f 접미사 사용
double d = 123.4;
boolean flag = true;
char c = ‘A’;
|
cs |
참조형 데이터 타입
데이터 타입 | 설명 | 예시 |
---|---|---|
클래스 | 사용자 정의 데이터 타입 | String, ArrayList 등 |
인터페이스 | 메소드 명세 | List, Map 등 |
배열 | 동일 타입의 데이터 모음 | int[], String[] 등 |
1
2
3
|
String str = “Hello, World!”; // 클래스 타입
int[] numbers = {1, 2, 3, 4, 5}; // 배열 타입
|
cs |
메모리 할당 이해하기
메모리 영역 | 저장 데이터 | 특징 |
---|---|---|
스택(Stack) | 기본형 변수, 참조형 변수 주소, 메소드 매개변수, 지역 변수 | 자동 관리, 빠른 접근 |
힙(Heap) | 참조형 데이터 타입의 실제 객체 | 런타임 크기 결정, 가비지 컬렉션 대상 |
작업 | 메모리 동작 | 예시 |
---|---|---|
기본형 변수 할당 | 스택에 직접 값 저장 | int a = 3; |
기본형 변수 복사 | 값 복사, 독립적 | int b = a; |
참조형 변수 할당 | 스택에 주소 저장, 힙에 객체 저장 | int[] c = {1, 2, 3, 4}; |
참조형 변수 복사 | 주소 복사, 같은 객체 참조 | int[] d = c; |
변수의 효율적 활용
변수 명명 규칙과 모범 사례
규칙 | 설명 | 예시 |
---|---|---|
명확성 | 변수의 목적을 명확히 표현 | String appName = "SitePointGram"; |
불리언 변수 | 질문 형태로 명명 | boolean appIsAlive = true; |
수량 표현 | 수량을 나타내는 접두사 사용 | int numUsers = 500; |
커스텀 데이터 타입 활용
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
|
public class User {
public static int numUsers = 0;
private int id;
private String username;
private boolean isOnline;
public User(String username) {
id = numUsers++;
this.username = username;
this.isOnline = true;
System.out.println(username + ” signed up!”);
}
public void logOn() {
isOnline = true;
printOnlineStatus();
}
public void logOff() {
isOnline = false;
printOnlineStatus();
}
private void printOnlineStatus() {
System.out.println(username + ” is online: “ + isOnline);
}
}
|
cs |
데이터 타입 선택 가이드라인
상황 | 권장 데이터 타입 | 이유 |
---|---|---|
정수 계산 | int | 기본 정수 타입, 최적화된 성능 |
소수점 계산 | double | 높은 정밀도, 메모리 제약 없을 때 |
조건 표현 | boolean | 코드 가독성 향상 |
유연한 데이터 구조 | 참조 타입 | 메소드와 속성 활용 가능 |
대용량 배열 | byte 또는 short | 메모리 사용량 최소화 |
실전 예제: 데이터 타입 최적화
용도 | 코드 예시 | 설명 |
---|---|---|
메모리 최적화 | byte[] largeArray = new byte[1000]; |
1KB 메모리만 사용 |
정수 계산 | int count = 0; for (int i = 0; i < 100; i++) { count += i; } |
int 타입 활용 |
소수점 계산 | double result = 0.0; for (int i = 0; i < 10; i++) { result += 0.1; } |
부동소수점 주의 |
효율적 문자열 연결 | StringBuilder sb = new StringBuilder("Hello"); sb.append(", World!"); |
단일 객체 재사용 |
자바의 데이터 타입과 변수를 효율적으로 활용하는 것은 성능 최적화와 메모리 관리에 중요한 역할을 합니다.
적절한 데이터 타입 선택과 변수 사용 방법을 익히면 더 효율적이고 유지보수가 용이한 코드를 작성할 수 있습니다.