공부/JAVA

Scope(유효범위)

JangGiraffe 2015. 12. 15. 16:06

 

JAVA에서 유효범위(Scope)는 변수가 영향을 미치는 범위를 말한다 이는 변수를 전역변수, 지역변수 나눠서 좀 더 관리하기 편리하도록 한 것이다.

 

유효범위는 우선순위에 따라 영향을 미치는데, 지역변수가 전역변수보다 우선순위가 높다. 전역변수로 기본적인 것을 설정하고, 필요에 따라 지역 값을 다르게 설정 하는 것이 더 효율적이기 때문이다.

  

 

            

 

위 두 코드의 차이점은 a 메소드의 변수 선언차이다. 이로인해 전자는 반복문이 끝나지 않고, 후자는 정상적으로 종료된다.

이유는 유효범위의 차이이다. 후자의 경우 메서드가 생성된 시점에서 같은 이름의 변수가 있다면 이를 우선시하고 메서드 종료시 같이 사라진다.

하지만 전자처럼. 메서드 내에 변수가 없다면 클래스 아래 변수를 참조하는 사용하는 것이다.

 

 

 

위 코드의 결과값으로 5가 출력된다. 메서드 내에 지역변수가 없다면 그 메서드가 소속된 클래스 내에 전역변수를 참고하기 때문이다.

 

이와 같은 방식을 정적스코프라고 하며 대부분의 언어들이 정적스코프를 사용한다. 자바 또한 동적스코프를 채택하지 않았다.

 

동적 스코프를 이용하면 바인딩은 실행 시 제어 흐름과 함수가 호출되는 순서에 따라 가장 가까운 활성 바인딩이 적용됨.

고로 b는 a에 소속된것이라고 볼 수 있고 이에따라 10이 출력된다.

참고 싸이트 : https://opentutorials.org/module/516/5447

반응형