Call by Value & Call by Reference

Tech/Java 2022. 12. 10. 13:52
728x90
728x90

값에 의한 전달 / 주소값에 의한 전달

Call by Value

// count의 값을 add에 넘겨 변경시키더라도 출력값엔 변화가 없다
// ( 값을 전달받았기 때문에 )
class Add {
    void add(int count) {
        count++;
    }
}

class Counter {
    int count = 0;   
}

public class ExamMain {
    public static void main(String[] args) {
        Counter counter = new Counter();
        System.out.println("더하기 전 : "+counter.count);
        Add add1 = new Add();
        add1.add(counter.count);
        System.out.println("더한 후 : "+counter.count);
    }
}

// Consonle
더하기 전 : 0
더한 후 : 0

 

Call by Reference

// int count → Counter counter
// 객체를 전달받도록 바꿈
// 객체 주소를 전달받았기 때문에 count값이 올랐다
class Add {
    void add(Counter counter) {
        counter.count++;
    }
}

class Counter {
    int count = 0;  //
}

public class ExamMain {
    public static void main(String[] args) {
        Counter counter = new Counter();
        System.out.println("더하기 전 : "+counter.count);
        Add add1 = new Add();
        add1.add(counter);
        System.out.println("더한 후 : "+counter.count);
    }
}

// Consonle
더하기 전 : 0
더한 후 : 1
728x90
300x250
mag1c

mag1c

2년차 주니어 개발자.

방명록