본문 바로가기
study/Data structure

classes & pointers

by stilinski 2023. 7. 21.
728x90

classes

필드와 생성자로 구성이 되어있다.

 

클래스는 비유를 하자면 쿠키를 만드는 틀이라고 할 수 있다.

클래스의 생성자로 클래스의 인스턴스들을 생성하여 쓸 수 있다.

 

 

자료구조에서 클래스가 어떻게 쓰이냐

예를들면 linkedList 클래스가 있으면 

append, remove 와 같은 기능들이 정의되어있다.

그것을 쓰기위해 우리는 그저 linkedList 생성자를 통해 linkedList의 인스턴스를 생성해서 쓰면된다.

 

 

pointers

이것을 이해하기 위해 먼저 java의 데이터 타입을 알아두면 조금 수월하다.

 

 

포인터가 아닌경우

 

직접 값을 넣어줄때.

기본 데이터타입(primitive type)은 값복사가 일어난다.

int a = 11;
int b = a;

a = 22;

//result
// a = 22
// b = 11

b에 a를 할당했어도 a값을 따라가는게 아닌 a에 들어있는 값을 그대로 복사하여 b에 지정하게 되는것이다.

그러므로 a의 값이 변한다고해서 b도 같이 변하지 않는다.

이런경우 포인터를 쓴다고 할 수 없다.

 

 

 

포인터인 경우

reference 타입의 데이터를 변수에 지정할때 실제 데이터는 다른 메모리(heap)에 저장되고 변수에는 해당 데이터가 저장된 주소를 저장하게 된다.

이런식이다.

이런식으로 같은 주소를 ‘가리키고’ 있기 때문에

pointer 라고 한다.

 

int[] nums = new int[]{10};
int[] nums2 = nums;

nums[0] = 20;

//reuslt
// nums[0] = 20
// nums2[0] = 20

그러므로 위의 코드와 다르게 nums2는 nums의 값이 변하면 같이 값이 변한다.

같은 메모리 주소를 저장하고 있기 때문이다.

 

 

728x90

'study > Data structure' 카테고리의 다른 글

Trees  (0) 2023.08.17
stack and queue  (0) 2023.08.11
Doubly linked list  (0) 2023.08.04
Linked List  (0) 2023.07.28
빅오 Big(O)  (0) 2023.07.19

댓글