JAVA

call by reference

aucd29 2013. 9. 26. 21:06
C++ 에서는 & 으로 변수에 레퍼런스를 넘기고 재귀 호출을 하게 되면 꽤나 쉽고 짧게 코딩이 되는 경우가 있는데 java를 하려고 보니... 먼가 안된다....


가령


public void a(value) {
++value;

if (value > 10) {
     return ;
}

    a(value);
}

public static void main(String[] args) {
    int value = 0;
    a(value);
    System.out.format("out : %d\n", value);
}

라고 했을 때 11 값을 얻을 수 없다는 것...


어찌할까 해서 역시나 권책임님에게 질문..

클래스를 만들면 되기도 하고 AtomicInteger 라는 놈도 있고...

클래스를 만들기로 하고

class IndexIneger {
    private int _index;
    
    public void increment() { ++_index; }

    public int getIndex() { return _index; }
}

클래스를 만들고 int 자리에 IndexInteger를 넣고 ++value 자리에 increment 비교문엔 getIndex 를 넣고 해보니 잘 된다.

추가적으로 int는 primitive 이고 object 형식으로 전달해야지만 reference 를 전달 한다고.