본문 바로가기

Java

Java 자료형 정리 (Java Data Type)

 

Java Data Type

Java의 자료형은 변수에 저장할 수 있는 데이터의 종류와 크기를 정의하여, 메모리를 효율적으로 사용하고

프로그램의 안정성을 높이는 데 도움을 준다.

 

Java 자료형은 크게 두 가지로 기본 자료형과 참조 자료형으로 구분된다.

 

 

Primitive Data Type (기본 자료형)

기본 자료형은 데이터를 직접 메모리에 저장하는 형태로, Java에서 미리 정의된 자료형이다.

8개의 기본 자료형이 있으며, 각 자료형은 고정된 메모리 크기를 사용한다.

 

자료형 크기 설명 예시 값
byte (정수형) 1바이트 -128 ~ 127의 정수를 저장한다. -128, 0, 127
short (정수형) 2바이트 -32,768 ~ 32,767의 정수를 저장한다. 1000, -2000
int (정수형) 4바이트 -2^31 ~ 2^31-1 범위의 정수를 저장한다. 123456, -654321
long (정수형) 8바이트 -2^63 ~ 2^63-1 범위의 정수를 저장한다. 123456789L
float (부동소수점형) 4바이트 소수점 이하 6~7자리의 실수를 저장한다. 3.14f, -2.7f
double (부동소수점형) 8바이트 소수점 이하 15자리의 실수를 저장한다. 3.141592, -0.5678
char (문자형) 2바이트 단일 문자 하나를 유니코드로 저장한다. 'A', '한'
boolean (논리형) 1바이트 참(true) 또는 거짓(false) 값을 가진다. true, false

 

 

Wrapper Clasee (래퍼 클래스)

Java의 기본 자료형을 객체로 다룰 수 있게 해주는 클래스이다.

Java에서는 기본 자료형을 객체처럼 사용할 수 없기 때문에,

기본 자료형을 객체로 다루어야 할 때는 래퍼 클래스를 사용한다.

 

각 기본 자료형마다 해당하는 래퍼 클래스가 있으며, 이를 통해 컬렉션 프레임워크나

제네릭 클래스 등 객체가 필요한 곳에서도 기본 자료형을 사용할 수 있다.

 

기본 자료형 래퍼 클래스
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

 

 

 

 

래퍼 클래스는 단순히 기본 자료형을 객체로 변환하는 것 외에도 여러 유용한 기능을 제공한다.

 

객체 생성

Integer intObject = Integer.valueOf(10); // int -> Integer 객체

 

 

문자열 변환

int num = Integer.parseInt("123"); // 문자열 -> int
String str = Integer.toString(123); // int -> 문자열

 

 

상수와 메서드 제공

int max = Integer.MAX_VALUE;
int min = Integer.MIN_VALUE;

 

 

Java 5부터는 오토박싱(Auto-boxing)과 언박싱(Unboxing)을 지원하여,

기본 자료형과 래퍼 클래스 간의 변환이 자동으로 이루어진다.

 

오토박싱(Auto-boxing)

Integer intObject = 10; // 기본형 int가 자동으로 Integer 객체로 변환

 

 

언박싱(Unboxing)

int num = intObject; // Integer 객체가 자동으로 int로 변환

 

오토박싱과 언박싱이 편리하지만, 불필요한 오토박싱 및 언박싱이 반복되면 성능에 영향을 줄 수 있다.

예를 들어, 반복문에서 기본 자료형을 래퍼 클래스로 자주 변환하는 경우 비효율이 발생할 수 있으므로 주의가 필요하다.

 

 

 

Reference Data Type (참조 자료형)

참조 자료형은 객체의 주소를 저장하며, 배열, 클래스, 인터페이스, 열거형 등이 포함된다.

참조 자료형은 객체를 생성하고 관리하는 데 사용된다.

 

 

참조 자료형 설명 주요 특징 예시
String 문자열을 나타내는 클래스 불변 객체(한 번 생성되면 값이 변경되지 않음) String str = "Hello";
Array 같은 타입의 여러 데이터를 저장하는 배열 객체 고정 크기, 같은 타입의 데이터 저장 int[] numbers = {1, 2, 3};
List 순서가 있는 데이터의 모음(컬렉션 프레임워크의 한 종류) 요소의 중복 허용, 순서 보장 List<String> list = new ArrayList<>();
Map 키-값 쌍으로 데이터를 저장하는 컬렉션 키의 중복 불가, 값의 중복 허용 Map<String, Integer> map = new HashMap<>();
Set 중복되지 않는 요소의 모음 요소 중복 불가, 순서 보장 안 됨 Set<String> set = new HashSet<>();
Class 사용자 정의 객체를 정의하는 자료형 속성과 메서드를 포함하여 사용자 정의 객체 생성 가능 class Person { String name; int age; }
Interface 객체의 동작을 정의하는 인터페이스 자료형 메서드 시그니처만 정의, 다중 상속 가능 interface Flyable { void fly(); }
Enum 상수 집합을 정의하는 자료형 한정된 상수 값으로 객체 생성 enum Day { MONDAY, TUESDAY }
Deque 양방향으로 삽입/삭제가 가능한 큐 FIFO, LIFO 방식 모두 가능 Deque<Integer> deque = new ArrayDeque<>();
Queue FIFO 방식의 대기열 자료형 순서대로 처리하는 큐 형태 Queue<String> queue = new LinkedList<>();
Stack LIFO 방식의 자료 구조 나중에 추가된 요소가 먼저 처리됨 Stack<Integer> stack = new Stack<>();

 

 

클래스(Class)

String name = "Alice"; // String은 클래스 자료형으로, name 변수는 "Alice" 객체를 참조

 

 

배열(Array)

int[] numbers = {1, 2, 3}; // numbers 변수는 int 배열 객체를 참조

 

 

인터페이스(Interface)

List<String> list = new ArrayList<>(); // List는 인터페이스 자료형

 

 

참조 자료형 변수에는 객체의 실제 데이터가 아닌, 객체가 위치한 메모리 주소가 저장된다.

이를 통해 변수는 객체를 참조하게 된다.

 

참조 자료형의 객체는 heap(힙) 메모리 영역에 저장된다.

기본 자료형은 stack(스택) 메모리에 저장되지만, 참조 자료형은 동적으로 힙에 할당된다.

 

참조 자료형 변수는 초기화하지 않으면 null로 설정된다.

 

 

클래스 객체 생성 및 사용

String text = new String("Hello"); // text는 "Hello"라는 객체를 참조

 

 

배열 사용

int[] numbers = new int[3]; // numbers는 int 배열 객체를 참조
numbers[0] = 1;

 

 

메서드를 통한 참조 전달

public void updateName(Person person) {
    person.setName("Updated Name");
}

 

 

참조 자료형의 null 주의점

참조 자료형이 null인 상태에서 이를 사용하려고 하면 NullPointerException이 발생한다.

String name = null;
System.out.println(name.length()); // NullPointerException 발생

 

'Java' 카테고리의 다른 글

Java 조건문 (if, if else, switch case)  (0) 2024.11.14
Java 문자열 (String)  (1) 2024.11.14
Java 배열 (Array)  (0) 2024.11.13
Java 형 변환 (Type Casting)  (0) 2024.11.12
Java 변수와 상수  (0) 2024.11.12