byte, short, int, long, float, double, char, boolean
데이터를 직접 저장합니다.
메모리에 값이 직접 저장되므로 스택 메모리에 저장됩니다.
다른 변수에 할당할 때 값 자체가 복사됩니다.
장점 : 원시타입은 값 자체를 저장하기 때문에 메모리 공간을 절약하고 더 빠른 접근이 가능합니다.
단점 : 원시 타입은 데이터를 단순히 저장하고 가져오는 용도로만 사용되므로 객체지향적인 프로그래밍에서는 제한적입니다. 그리고 null 값을 가질 수 없기 때문에 NullPointerException을 방지 할 수 없습니다.
Class, Interface, Array...
객체의 주소를 저장합니다.
메모리에는 객체가, 변수에는 객체의 주소가 저장됩니다.
변수 간의 할당 시 주소만 복사 됩니다.
장점 : 클래스와 객체를 사용하여 복잡한 데이터 구조를 모델링할 수 있으며, 상속, 다형성, 캡슐화 등 객체 지향 프로그래밍의 장점을 활용할 수 있습니다. 그리고 null 값을 가질 수 있어 객체가 존재하지 않을 수 있는 상황을 표현할 수 있습니다.
단점 : 객체는 동적으로 할당되며, 이에따라 메모리 사용량이 증가할 수 있습니다. 그리고 객체의 주소를 저장하므로 간접적인 접근이 필요하며, 이로 인해 성능이 저하 될 수 있습니다.
원시타입은 단순한 값을 다룰 때 효과적이며, 작은 메모리 공간을 차지합니다.
참조 타입은 객체를 생성하고 관리할 때 유연성을 제공하며, 메모리 사용을 효율적으로 합니다.