글 작성자: 취업중인 피터팬
728x90
기본 환경
JDK : 1.8.0_261 버전
JRE : 1.8.0_261 버전
JAVA VERSION : 8 업데이트 261
Eclipse IDE VERSION : 2020-06버전

 

목표

지역변수에 대해 이해한다.


 

 

코드

   

package ex05method;
/*
 Local variable(지역변수)
 - 변수는 사용범위(Scope)를 가지고 있고, 해당 지역내에서만 
 	사용가능하다.
 -해당 지역을 벗아나면 즉시 메모리에서 소멸된다.
 -기본 자료형은 스택(stack)라는 메모리 공간을 사용한다.
 -stack은 CPU가 메모리의 생성 및 소멸을 주관한다.
 */
public class E06LocalVariable {

	public static void main(String[] args) {
		boolean scope = true;
		
		/*
		 main 지역에서 num을 선언하면 그보다 작은 if문의 지역에서는
		 같은 이름의 변수를 선언할수 없다.
		 큰 지역에서 이미 선언하여 메모리상에 상주하고 있기 때문이다.
		 */
		// int num = 9;
		if(scope) {
			int num = 1;
			num ++;
			System.out.println("첫번째 if문 지역 : " + num);
		}
		
		else {
			int num = 10;
			System.out.println("첫번째 if문의 else 지역 : " + num);
		}
		
		/*
		 if문의 블럭에서 선언된 변수 num은 해당 블럭을 벗어나면
		 메모리에서 소멸된다. 따라서 아래에서 num을 선어할 수 있다.
		 */
		int num = 100;
		System.out.println("main메소드지역 : " + num);
		
		simpleFunc();//메소드 호출
		
		System.out.println("main메소드 끝");
		
	}
	/*
	main에서 선언한 변수 num이 메모리에 아직 남아있지만, simpleFunc()
	메소드는 서로 다른 지역에 정의되어 있으므로 같은 이름의 변수를 선언할 수 있다.
	 */
	static void simpleFunc() {
		int num = 10000;
		
		System.out.println("simple메소드지역 : " + num);
	}

}

 

지역변수을 이해하기 위한 코드입니다. 블럭 안에서 선언한 변수는 그 블럭이 끝나면 소멸됩니다. 그것을 지역변수라고 합니다. 큰 블럭에서 선언한 변수는 작은지역에서 같은 이름으로 재선언 할 수 없고 작은 블럭에서 사용할 수 있습니다. 개발하다 보면 생각보다 헷갈리는 일이 많이 있습니다. 잘 알아두도록 합시다.

 

 

결과 값