활동/호기심

Primitive와 Reference 타입 차이점?

ByeongJun 2023. 3. 29. 17:12
반응형

 

23년 3월부터 입사 동기들과 매주 월요일, 목요일마다 Java 스터디를 진행하고 있다.

 

스터디 팀원들과 공유할 내용을 준비하기 위해 게시물을 작성하던 중 

동생이지만 배울게 많은 개발스승승원이에게 피드백을 받았는데 

primitive type 설명을 해보라길래 [호기심] 카테고리에 공부할 겸 글을 적어본다.

 

Java 내용에 맞춰 설명하고싶었지만, 아직 공부 중이라 그 정도 실력은 안된다.

 


 

Java 변수의 데이터 타입은 Primitive와 Reference 두 가지로 나뉘는데 차이점을 알아보겠다.


 

primitive type 값은 다른 곳에 할당하면 값이 통째로 copy 되는 것을 볼 수 있다.

 

그러나 a가 다른 객체를 가리키는 주소값 Reference라면 말이 달라진다.

참조값이라고도 하며 어떤 값을 가리킨다고 하여 포인팅, 포인터라고도 부른단다. 

 

변수 a에 object가 할당되는 게 아니라 가리키고 있는 주소값이 a에 할당되는 것이다.

 

Primitive Type은 byte, char, int 등 일반값 타입이며 (제외한 타입들은 모두 Reference type)

비객체 타입으로 Null 값을 가질 수 없으나

만약에 Null 값을 넣고싶다면 Wrapper Class(Integer, Float, Boolean)를 활용해야한다고 한다. 

 

자바스크립트에서 변수가 이동할 때는 항상 값이 복사되는데 

이 값이 실제 값 전체인지 주소값인지의 차이점이 있다는 것을 알게 되었다.

 

 

 

위의 예시와 함께 내용을 다시 정리하자면 

 

Primitive Type의 경우에는 값 전체가 복사되어 let b = a; 실제 값인 a = 1 이라는 값을 가져왔기 때문에 

console.log(b);에서 1이 출력된 것이고

 

Reference는 { x: 1}; 주소값(객체)을 복사하는 것이기 때문에 

console.log(b.x);에서 11이 출력되는 것이다.

 

 

반응형