Java의 기본 데이터 타입과 참조 타입



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

기본 데이터 타입은 Java에서 가장 기본적으로 제공되는 데이터 타입으로, 객체가 아닌 비객체 타입입니다. 이 타입들은 null 값을 가질 수 없으며 반드시 사용되기 전에 선언되어야 합니다.

public class DataTypes {
    public static void main(String[] args) {
        // 정수형 변수 선언
        int x = 10; // 32bit
        long y = 1000000000L; // 64bit, long 타입은 'L' 혹은 'l'을 붙여야 함
        short z = 32767; // 16bit
        byte b = 127; // 8bit

        // 실수형 변수 선언
        float a = 3.14F; // 32bit, float 타입은 'F' 혹은 'f'를 붙여야 함
        double c = 2.71828; // 64bit

        // 문자형 변수 선언
        char ch = 'A'; // 작은따옴표 사용

        // 논리형 변수
        boolean bool = true;

        // 변수 출력
        System.out.println("정수형 변수: " + x + ", " + y + ", " + z + ", " + b);
        System.out.println("실수형 변수: " + a + ", " + c);
        System.out.println("문자형 변수: " + ch);
        System.out.println("논리형 변수: " + bool);
    }
}

1) 정수형 (Integer Types)

  • int: 32비트 정수형 타입.
  • long: 64비트 정수형 타입으로, 값 뒤에 ‘L’ 혹은 ‘l’을 붙여야 합니다. (long y = 1000000000L;)
  • short: 16비트 정수형 타입입니다. (범위는 -32768에서 32767까지)
  • byte: 8비트 정수형 타입입니다. (범위는 -128에서 127까지)

2) 실수형 (Floating-Point Types)

  • float: 32비트 부동소수점 타입으로, 값 뒤에 ‘F’ 혹은 ‘f’를 붙여야 합니다. (float a = 3.14F;)
  • double: 64비트 부동소수점 타입으로, 일반적으로 소수점 숫자를 다룰 때 사용됩니다.

3) 문자형 (Character Type)

  • char: 16비트 유니코드 문자형으로, 작은 따옴표 ’ ‘ 안에 문자를 넣어 선언합니다. (char ch = 'A';)

4) 논리형 (Boolean Type)

  • boolean: true 또는 false 값을 가질 수 있는 타입입니다.


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

참조형 데이터 타입은 모든 기본형 이외의 타입을 의미하며, Java의 모든 참조형 데이터 타입은 java.lang.Object 클래스를 상속받습니다. 이들은 null 값을 가질 수 있으며, 객체나 배열과 같은 데이터를 다룰 때 사용됩니다.

public class DataTypes {
    public static void main(String[] args) {
        // 참조형 타입 선언
        String greeting = "Hello, World!"; // 참조형이지만 기본형처럼 사용
        int[] numbers = {1, 2, 3, 4, 5};
        Person person = new Person("John", 30);

        // 참조형 변수 출력
        System.out.println("String 변수: " + greeting);
        System.out.println("배열 변수: ");
        for (int i = 0; i < numbers.length; i++) {
            System.out.println(numbers[i]);
        }
        System.out.println("Person 객체: " + person.getName() + ", " + person.getAge());
    }
}

// 사용자 정의 클래스
class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

1) String 타입

  • String은 Java에서 특별한 참조형 타입으로, 문자열을 다룰 때 사용합니다. String은 참조형이지만 마치 기본형처럼 다루어지며, String greeting = "Hello, World!";와 같이 선언할 수 있습니다.

2) 배열 (Array)

  • 배열은 참조형 타입으로, 같은 타입의 데이터를 저장하는 구조입니다. int[] numbers = {1, 2, 3, 4, 5};와 같이 선언하며, 배열의 요소에 접근할 때는 인덱스를 사용합니다.

3) 사용자 정의 클래스 (Custom Class)

  • Person과 같은 클래스는 참조형 타입으로, 객체 지향적으로 데이터를 다룰 때 사용됩니다. 위 코드에서 Person person = new Person("John", 30);와 같이 객체를 생성할 수 있습니다.


3. Primitive Type과 Reference Type의 차이점

  1. 메모리 저장 방식: 기본형은 실제 값을 메모리에 저장하지만, 참조형은 객체의 주소값을 저장합니다.
  2. null 값: 기본형은 null 값을 가질 수 없으며, 참조형은 null 값을 가질 수 있습니다.
  3. 초기화: 기본형은 선언 즉시 초기화되지만, 참조형은 명시적으로 new 키워드를 사용해 초기화해야 합니다.