자바의 타입 (혹은 다른 언어들)은 두개의 그룹으로 나뉜다.

  1. primitive type - 기본형
  2. reference type - 참조형

메인 메모리에는 heap, stack 2가지가 존재하는데,

primitive: 직접 해당 value를 stack에 갖고 있음

reference: heap에 value 저장, stack에 heap 주소 값을 갖고 있음.

Primitive Type

자바는 8개 primitive type이 존재한다.

byte, short, float, int , long, double, char, boolean,

Reference Type

엄청나게 많은 수의 reference type이 존재한다.

primitive type을 비교할 때에는 ==을 사용하면 stack에 있는 값을 비교하기 때문에 정상적으로 작동한다. 하지만 reference type의 경우에는 stack에 저장되어있는 주소값을 비교하게 된다.

따라서, 참조형 타입이 담고 있는 값을 비교하기 위해서는 각 객체가 가지는 .equals() 함수를 이용해 비교하여야 한다.

이 equals 함수는 객체에 따라서 직접 구현해줄 수 있다.

정리하자면,