[JAVA] 지역변수와 전역변수

JAVA 지역변수와 전역변수

java는 블록레벨 스코프이다. 

즉 { } 중괄호 안에 작성한 변수의경우 그 중괄호 안에서만 사용이 가능하다.

만약에 전역변수를 사용하고자한다면 public class로만 작성된 최상위 {}중괄호 안에 작성하면 된다.


사진1














사진2


사진1은 전역에 선언된 변수 a와 b이다. 그리고 이러한 전역변수를 method1과 method2에서 사용 가능하다.

각각의 메소드 안에서 a=5와 같이 작성하면 전역변수로 선언된 static double a의 값을 5로 변경할 수 있다. 

반면에 각각의 메소드 안에서 double a = 5를 작성하면 지역변수로 새로운 a가 생성되어 전역에 선언된 변수의 값을 참조하거나 변경하지않고 해당 메소드의 { }중괄호 안에서만 유효한 지역변수가 생성된다.

사진2에서 main메소드안에 선언된 변수 a, b는 { }중괄호 안에서만 유효한 지역변수이므로 method1과 method2에서 사용이 불가능하여 에러가 발생한다.

즉 블록레벨 스코프를 가지고있다.


한가지 예시를 더 보면
















main메서드안에 a메서드가 호출되면서 반복문의 증감연산자가 제대로 동작안하고 계속되서 0을 출력할것이라고 예측해볼 수 있다. 하지만 위의경우 숫자를 순차적으로 출력한다.

그럴 수 있는 이유는 a메서드 내에 선언된 i는 해당 메서드 안에서만 존재하는 지역변수이기 때문이다.
그러므로 반복문에 들어가더라도 반복문에 선언된 변수i에 영향을 주지 않으므로 번호를 순차적으로 결과값으로 출력할 수 있다.




댓글