본문 바로가기
CS/JAVA

Primitive type VS Reference type , 두 친구의 이야기를 들어보자

by upswp 2021. 3. 21.

Primitive type(기본형 타입)

  • JAVA에서는 총 8가지의 Primitive type을 정의하고 제공한다.
  • JAVA에서 기본 자료형은 반드시 사용하기 전에 선언하여야한다.
  • OS에 따라 기본 자료형의 길이가 변하지 않는다.
  • 비객체 타입이므로 null값을 가질 수 없다. 만약 Null을 가지고 싶으면 Wrapper Class를 활용한다.
  • Stack 메모리에 저장된다.

JAVA의 기본 자료형 타입
Wrapper Class 구조도


Reference type(참조형 타입)

  • JAVA에서 Primitive type을 제외한 모든 타입은 Reference type이다.
  • Reference type은 JAVA에서 java.lang.Object클래스를 상속하는 모든 클래스를 의미한다. 
  • new로 인하여 생성된 것들은 메모리 영역인 Heap 영역에 생성을 하게 되며, Garbage Collector가 돌면서 메모리를 해제한다.
  • 종류로는 클래스 타입(Class type), 인터페이스 타입(Interface type), 배열 타입(Array type), 열거 타입(Enum type)이 있다.
  • 빈 객체를 의미하는 Null이 존재할 수 있다.
  • 문법상으로 에러가 없지만 실행시켰을 때 에러가 나는 런타임 에러가 발생한다. 
    예를 들어, 객체나 배열을 Null값으로 가지고 있으면 NullPointException이 발생하므로 변수 값을 지정해야한다.
  • Heap메모리에서 생성된 인스턴스는 메소드나 각종 인터페이스에서 접근하기 위해 JVM의 Stack영역에 존재하는 Frame에 참조값을 가지고 있어 이를 통해 인스턴스를 핸들링한다.

 

String Class

클래스형중에서 String 클래스는 특별하다. 이 클래스는 참조형에 속하지만 기본적으로 사용은 기본형 처럼 사용한다. 그리고 불변(immutable)하는 객체이다.

String 클래스에는 값을 변경해주는 메서드들이 존재하지만 해당 메서드를 통해 데이터를 바꾼다 하더라도 기존의 데이터를 변경하는것이 아닌 새로운 String 클래스 객체를 생성시킨다.

기본형 비교는 == 을 사용하지만 String 클래스 객체간의 비교는 .equals() 메서드를 사용해야한다.


참고

 

 

Primitive type & Reference type | 👨🏻‍💻 Tech Interview

Primitive type & Reference type Goal Primitive type에 대해 설명할 수 있다. Reference type에 대해 설명할 수 있다. Abstract 자바에는 기본형(Primitive type)과 참조형(Reference type)이 있습니다. 일반적인 분류는 다음

gyoogle.dev