기본 타입과 참조 타입

    변수

    변수란 데이터를 저장하기 위한 메모리 공간에 이름을 부여한 것이다.  변수에 값을 저장하고 필요할 때마다 값을 꺼내 사용할 수 있다.

     

    자료형 (Data Type)

    자료형(Data Type)은 변수에 저장될 데이터의 종류와 크기를 결정하는 역할을 한다. 이 자료형은 크게 기본형 타입과 참조형 타입으로 구분된다.

     

    기본형 타입 

    int, byte, short, long, float, double, char, boolean
    • 기본형 타입은 JVM의 스택 메모리 영역에 값을 저장한다. (로컬 변수일 경우)
    • 각 기본형 타입은 고정된 크기를 가진다. (ex. int는 4바이트)
    • 초기화 하지 않으면 자료형에 맞는 기본값으로 초기화된다. (null을 가질 수 없다)
    • 기본형 숫자타입은 모두 부호가 있는 signed 타입으로 음수와 양수를 모두 표현할 수 있다.
      • 가장 왼쪽 비트를 통해 부호를 구분하기 때문에 N bit로 표현할 수 있는 signed 범위는 2^(n-1) ~ 2^(n-1) -1


    참조형 타입 (Reference Type)

    String, 배열, 인터페이스, 열거, 사용자 정의 클래스 등
    • 체는 메모리에 저장되며, 객체의 주소(참조값)는 스택에 저장한다.
    • 참조형 타입의 기본 초기값은 항상 null, 초기화 하지 않으면 NullPointerExcetion 발생

     

    String

    : String은 immutable한 성격을 가진다. 즉, String 객체는 한 번 생성되면 그 값을 변경할 수 없다.

    String a = "Hello";
    System.out.println(a.hashCode());
    
    a = a + " Word";
    System.out.println(a.hashCode());
    
    # 출력 값이 다르다

     

     

    실제 메모리에 "Hello Word"를 따로 만들고 변수 a를 다시 참조하는 식으로 작동한다.

     

     

    클래스

    : 객체를 생성하기 위한 설계도, 객체의 상태(필드)와 행동(메서드)을 정의한다.

    class Person {
        String name;
        int age;
    }
    
    Person person = new Person();

     

    배열 (Array)

    : 같은 자료형의 요소들이 순차적으로 저장되는 연속적인 메모리 공간, 고정된 크기(한 번 생성 후 크기 변경 불가능)

    int[] numbers = new int[5];
    String[] names = {"Jenny", "Alice"}

     

    인터페이스 (Interface)

    : 클래스가 반드시 구현해야하는 메서드들의 집합. 인터페이스를 통해 다중 상속처럼 동작하게 할 수 있다.

    interface Animal {
    	void sound();
    }

     

    열거형 (Enum)

    : 상수를 정의하는 타입

    enum Direction {
    	NORTH, SOUTH, EAST, WEST;
    }

     

    참고 자료 

    댓글