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 를 전달 한다고.
가령
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 를 전달 한다고.