본문 바로가기

언어/Java

[ 자바 / Java ] 데이터 타입에 대해서 알아보자.

반응형

자바(Java)에는 다양한 데이터 타입이 있으며, 이를 통해 변수에 저장할 수 있는 값의 유형을 정의할 수 있습니다. 자바의 데이터 타입은 크게 기본 데이터 타입(primitive data types)참조 데이터 타입(reference data types)으로 나뉩니다. 각 타입은 메모리 사용량, 저장할 수 있는 값의 범위 및 용도에 따라 다릅니다.

1. 기본 데이터 타입 (Primitive Data Types)

기본 데이터 타입은 자바의 가장 기본적인 데이터 유형으로, 각 타입은 메모리 상의 특정 크기를 차지합니다. 자바는 8가지의 기본 데이터 타입을 제공합니다.

정수 타입 (Integer Types):

  1. byte:
    • 크기: 1바이트 (8비트)
    • 값의 범위: -128 ~ 127
    • 사용 예: 메모리 절약이 필요한 경우 또는 파일이나 네트워크에서의 데이터 처리를 위한 바이트 수준의 작업
      byte smallNumber = 100;
  2. short:
    • 크기: 2바이트 (16비트)
    • 값의 범위: -32,768 ~ 32,767
    • 사용 예: 메모리 절약이 중요한 곳에서 int 타입보다 큰 정수를 사용할 때
      short mediumNumber = 32000;
  3. int:
    • 크기: 4바이트 (32비트)
    • 값의 범위: -2,147,483,648 ~ 2,147,483,647
    • 사용 예: 일반적인 정수 연산, 루프 카운터, 인덱스 등
      int number = 123456;
  4. long:
    • 크기: 8바이트 (64비트)
    • 값의 범위: -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
    • 사용 예: 아주 큰 정수 값을 다루어야 할 때
      long largeNumber = 123456789012345L;

부동 소수점 타입 (Floating-Point Types):

  1. float:
    • 크기: 4바이트 (32비트)
    • 값의 범위: 대략 ±1.4E-45 ~ ±3.4E38 (정밀도 약 7자리)
    • 사용 예: 소수점 이하의 작은 범위의 실수 값, 그래픽스 프로그래밍, 과학적 계산 등
      float pi = 3.14f;
  2. double:
    • 크기: 8바이트 (64비트)
    • 값의 범위: 대략 ±4.9E-324 ~ ±1.8E308 (정밀도 약 15자리)
    • 사용 예: 더 큰 범위의 실수 값, 금융 계산 등
      double e = 2.718281828459045;

문자 타입 (Character Type):

  1. char:
    • 크기: 2바이트 (16비트, 유니코드 지원)
    • 값의 범위: '\u0000' (0) ~ '\uffff' (65,535)
    • 사용 예: 단일 문자 저장, 유니코드 문자 지원
      char letter = 'A';

논리 타입 (Boolean Type):

  1. boolean:
    • 크기: 1비트 (사실상, 자바는 boolean의 크기를 명시적으로 정의하지 않음)
    • 값의 범위: true 또는 false
    • 사용 예: 조건 분기, 논리 연산
      boolean isJavaFun = true;

2. 참조 데이터 타입 (Reference Data Types)

참조 데이터 타입은 객체의 참조(주소)를 저장하며, 자바의 다양한 데이터 구조와 클래스들을 나타낼 수 있습니다.

주요 참조 데이터 타입:

  1. 클래스 (Class)
    • 사용 예: 사용자 정의 객체, 자바 API 클래스의 인스턴스 등
      String text = "Hello, World!";
      MyClass myObject = new MyClass();
  2. 인터페이스 (Interface)
    • 사용 예: 인터페이스의 구현체를 참조할 때
      List<String> list = new ArrayList<>();
  3. 배열 (Array)
    • 사용 예: 동일한 타입의 여러 값들을 저장할 때
      int[] numbers = {1, 2, 3, 4, 5};
  4. 열거형 (Enum)
    • 사용 예: 제한된 상수 집합을 나타낼 때
      enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }
      Day today = Day.MONDAY;

기본 데이터 타입과 참조 데이터 타입의 차이점

  • 저장되는 값:
    • 기본 데이터 타입은 실제 값을 직접 저장합니다.
    • 참조 데이터 타입은 객체의 메모리 주소를 저장합니다.
  • 메모리 사용:
    • 기본 데이터 타입은 고정된 크기의 메모리를 사용합니다.
    • 참조 데이터 타입은 객체의 실제 크기에 따라 메모리 사용량이 달라집니다.
  • 기본값:
    • 기본 데이터 타입은 기본값을 가질 수 있으며, 예를 들어 int는 0, boolean은 false입니다.
    • 참조 데이터 타입은 null로 초기화될 수 있습니다.
  • 메모리 위치:
    • 기본 데이터 타입은 스택 메모리에 저장됩니다.
    • 참조 데이터 타입은 힙 메모리에 저장된 객체의 참조를 스택 메모리에 저장합니다.

변수 타입 사용 예

자바 코드에서 기본 데이터 타입과 참조 데이터 타입을 사용하는 예제는 다음과 같습니다:

public class VariableExample {
    public static void main(String[] args) {
        // 기본 데이터 타입
        int age = 25;
        double height = 5.9;
        boolean isStudent = false;
        char grade = 'A';

        // 참조 데이터 타입
        String name = "Alice";
        int[] scores = {95, 82, 78, 88, 91};
        VariableExample example = new VariableExample();

        // 출력
        System.out.println("Name: " + name);
        System.out.println("Age: " + age);
        System.out.println("Height: " + height);
        System.out.println("Is Student: " + isStudent);
        System.out.println("Grade: " + grade);
        System.out.print("Scores: ");
        for (int score : scores) {
            System.out.print(score + " ");
        }
    }
}

이 코드에서 다양한 기본 데이터 타입(int, double, boolean, char)과 참조 데이터 타입(String, 배열, 사용자 정의 클래스)이 사용되었습니다.

자바의 변수 타입에 대해 궁금한 점이 있거나 더 자세한 설명이 필요하다면 언제든지 질문해 주세요!

반응형