minstudio

변수와 자료형 (원시 타입 vs 참조 타입)

자바는 아주 엄격한 타입 시스템을 가집니다. 변수에는 크게 원시 타입(Primitive Type)참조 타입(Reference Type) 두 가지가 있습니다.

int, double, boolean 같은 원시 타입은 데이터 그 자체가 Stack(스택) 메모리에 직접 저장됩니다. 빠르고 가볍습니다. 반면 String이나 개발자가 만든 Class 객체 같은 참조 타입은 실제 데이터가 Heap(힙) 메모리에 저장되고, Stack에는 그 Heap 메모리의 '주소(리모컨)'만 보관됩니다.

💾 자바 메모리 구조 (Stack vs Heap) Stack 메모리 int age = 30 String name = 주소(0x123) Heap 메모리 객체 (주소: 0x123) "Minstudio"
public class Main {
    public static void main(String[] args) {
        // 1. 원시 타입 (Primitive Type)
        // 값 자체가 Stack 메모리에 저장됩니다.
        int age = 30;
        double height = 175.5;
        boolean isStudent = false;

        // 2. 참조 타입 (Reference Type)
        // 실제 데이터는 Heap에, 변수(name)에는 Heap의 주소가 담깁니다.
        String name = new String("Minstudio");
        
        // 자바에서 문자열은 특별 취급되어, new 없이도 생성 가능합니다. (String Pool)
        String job = "Developer"; 

        // 3. 참조 타입의 주의점 (주소 비교 vs 값 비교)
        String a = new String("Java");
        String b = new String("Java");

        // == 연산자는 '주소'를 비교합니다. (false)
        System.out.println("a == b : " + (a == b)); 

        // .equals() 메서드는 실제 '값'을 비교합니다. (true)
        System.out.println("a.equals(b) : " + a.equals(b));
    }
}
변수와 자료형 (원시 타입 vs 참조 타입) | Minstudio