ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA] 전역변수, 지역변수
    JAVA 2023. 7. 16. 15:13

    아래 예제에서 첫번째 i변수가 a() 메소드 안에 선언돼 있어서 a() 메소드 바깥에 영향을 미칠 수 없다.

    -> for 문안에 들어있는 i변수 값 변경되지 않는다.

     

    [같은 이름의 변수 유효범위 확인 예제]

    public class Scope {
        static void a(){
            int i = 5; //첫번째i
        }
        public static void main(String[] args) throws Exception {
            for(int i=0 ; i<10 ; i++){ //두번째 i
                a();
                System.out.println(i);
            }
        }
    }
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9

     

    아래 예제는 전역변수로 선언된 i 값이 for문안에 영향을 미치기 때문에 무한반복이 일어남

    public class Scope {
        static int i; //전역변수
    
        static void a(){
            int i = 0; //지역변수
        }
        public static void main(String[] args) throws Exception {
            for(int i=0 ; i<10 ; i++){
                a();
                System.out.println(i);
            }
        }
    }

     

    [this를 이용하여 전역변수에 접근]

    class Calculator {
        static double pi = 3.14;
        int left,right;
    
        public void setCalculator(int left,int right){
            this.left = left;
            this.right = right;
        }
    
        public void sum(){ //더하기
            System.out.println(this.left + this.right); //this를 이용하여 전역변수에 접근
        }
    
        public void avg(){ //평균
            System.out.println((this.left+this.right)/2); //this를 이용하여 전역변수에 접근
        }
    }
    
    public class CalculatorDemo {
        public static void main(String[] args) throws Exception {
            Calculator c1 = new Calculator();
            c1.setCalculator(10, 20);
            c1.sum();
            c1.avg();
    
            Calculator c2 = new Calculator();
            c2.setCalculator(100, 200);
            c2.sum();
            c2.avg();
        }
    }
    30
    15
    300
    150
Designed by Tistory.