[C와 JAVA] JAVA는 포인터가 없다?
IT/JAVA

[C와 JAVA] JAVA는 포인터가 없다?

C언어를 공부하다 JAVA로 넘어온 나에게는 포인터가 없는게 어색했다.

 

C언어에서 포인터와 JAVA의 참조형 변수의 다른 점을 살펴보자

 

C언어

int c;

int pointer = &c;

*pointer = 3;  

 

포인터를 이용해 직접 메모리 주소에 접근을 할 수 있고,

주소 안의 메모리에 직접 접근을 해서 사용할 수가 있다.

단, 임의의 메모리 값을 사용할 수 있다는 건 임베디드 환경에서는 필요하지만, 윈도우와 같은 OS환경에서 특정 메모리 주소의 어떤 값을 사용한다는 것은 시스템 폭주를 야기할 수 있다고 한다.

JAVA

int[] Java = new int[3];

 

Java는 메모리 주소라고 생각을 해야한다.

Java라는 참조 변수에는 힙(heap)영역에 할당된 int형 배열을 가르키고 있다.

여기서 Java(언어아님 변수이름임)는 참조형 변수인데 포인터과 비슷하다고 생각하면 된다.

 

결론은 참조형 변수는 포인터와 비슷하지만 포인터라고 할 수는 없다. 

메모리를 직접 핸들링 할 수 없다.