C언어를 공부하다 JAVA로 넘어온 나에게는 포인터가 없는게 어색했다.
C언어에서 포인터와 JAVA의 참조형 변수의 다른 점을 살펴보자
C언어
int c;
int pointer = &c;
*pointer = 3;
포인터를 이용해 직접 메모리 주소에 접근을 할 수 있고,
주소 안의 메모리에 직접 접근을 해서 사용할 수가 있다.
단, 임의의 메모리 값을 사용할 수 있다는 건 임베디드 환경에서는 필요하지만, 윈도우와 같은 OS환경에서 특정 메모리 주소의 어떤 값을 사용한다는 것은 시스템 폭주를 야기할 수 있다고 한다.
JAVA
int[] Java = new int[3];
Java는 메모리 주소라고 생각을 해야한다.
Java라는 참조 변수에는 힙(heap)영역에 할당된 int형 배열을 가르키고만 있다.
여기서 Java(언어아님 변수이름임)는 참조형 변수인데 포인터과 비슷하다고 생각하면 된다.
결론은 참조형 변수는 포인터와 비슷하지만 포인터라고 할 수는 없다.
메모리를 직접 핸들링 할 수 없다.
'IT > JAVA' 카테고리의 다른 글
[JAVA] 오버로딩에 대해서 (0) | 2021.02.15 |
---|---|
[JAVA] print, println, printf의 구분 (0) | 2021.02.11 |
[객체 관련 용어 정리] 객체(Object) 인스턴스(instance) 클래스(Class)를 관계를 통해 알아보자 (0) | 2021.02.10 |
[JAVA] 자바 - 2차원 배열 길이 length (1) | 2021.02.09 |
[JAVA] 자바 - 가변배열 - 2차원 배열 (0) | 2021.02.09 |