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이 출력되는 것이다.
'활동 > 호기심' 카테고리의 다른 글
해시함수 정리 (Hash 충돌 발생 원인과 해결방법 / Hash Table과 Hash Map 차이점) (0) | 2023.08.22 |
---|---|
자바 제네릭(Generic) 정의와 사용하는 이유 정리 (0) | 2023.08.21 |
chatGPT와 함께 공부하는 GROUP BY와 HAVING절은 무조건 같이 와야 하는가? (0) | 2023.06.07 |
정처기 공부하다 빠져버린 FIFO 페이지 교체 알고리즘의 늪 (페이지 부재(page fault) 횟수 문제 완벽 이해) (0) | 2023.05.09 |
자바에서 클래스 멤버와 인스턴스 멤버.. 진짜 뭔소린지 하나도 모르겠네 (0) | 2023.04.09 |