[JAVA] 참조변수와 일반변수

오태영·2024년 8월 13일
post-thumbnail

자바에는 참조변수와 일반변수가 존재합니다. 일반변수와 참조변수란 무엇일까요.

일반변수

일반변수란 원시타입을 사용하여 선언된 변수를 말합니다.

종류데이터형크기(byte)표현
논리형boolean1true or false
문자형char2유니코드 문자데이터
정수형byte1-128 ~ 127
정수형short2-32768 ~ 32767
정수형int4-2147483648 ~ 2147483647( -21억 ~ + 21억)
정수형long8-9223372036854775808 ~ 9223372036854775807(-100경 ~ + 100경)
실수형float41.4E-45 ~ 3.4028235E38
실수형double84.9E-324 ~ 1.7976931348623157E308

위와 같은 원시타입을 사용하여 실제 값을 저장합니다.

예를들면 코드를 실행하게 되면 각 코드의 변수는 어디에 저장이 될까요?

바로 램메모리에 저장이됩니다. 위의 그림과 같이 램메모리는 3가지의 영역으로 나뉩니다.
Stack : 일반변수를 저장하는 구역
Heap : 참조변수를 저장하는 구역
Static : static변수를 저장하는 구역

일반변수는 Stack메모리에 저장이 됩니다. 쉽게 말해 우리가 흔히 int a = 10; 과 같이 저장하는 일반변수는 Stack메모리에 저장이 됩니다.

그렇다면 참조변수는 무엇일까요


참조변수

참조변수란(Reference Variables) 객체의 메모리 주소를 저장하는 변수입니다. 흔히 자바에서 문자열을 선언하면,

String str = "Hello World";

위와 같이 선언을 합니다. 이때 값은 str에 직접 저장되는 것이 아닌 주소값을 저장합니다.
그럼 위와 같이 주소값을 저장하는 것은 어떤 이유에서 일까요?

일반변수는 변수가 저장되면 Stack메모리에 저장이 되고 이것을 사용하기 위해서는 객체 자체를 복사하여 가져옵니다.
하지만 참조변수를 사용하게 되면 주소값을 불러오게 되므로 메모리의 효율성이 증가합니다.
또한 동적 메모리 할당, 다형성 지원등 많은 이점이 있습니다.

profile
개발자 지망생

0개의 댓글