#자바
이제 예제를 다음과 같이 변경 해 보자.
class Updator {
public void update(Counter counter) {
counter.count++;
}
}
public class Counter {
int count = 0;
public static void main(String[] args) {
Counter myCounter = new Counter();
System.out.println("before update:"+myCounter.count);
Updator myUpdator = new Updator();
myUpdator.update(myCounter);
System.out.println("after update:"+myCounter.count);
}
}
If you want to change selection, open document below and click on "Move attachment"
05-3 Call by value시키려고 시도하는 예제이다.
실행 해 보면 다음과 같은 결과 값이 나온다.
before update:0
after update:0
객체 변수 count의 값을 update메소드에 넘겨서 변경시키더라도 값에 변화가 없다. 그 이유는 이전 챕터에서 알아본 것과 같이 update 메소드는 값(int 자료형)을 전달받았기 때문이다.
<span>이제 예제를 다음과 같이 변경 해 보자.
class Updator {
public void update(Counter counter) {
counter.count++;
}
}
public class Counter {
int count = 0;
public static void main(String[] args) {
Counter myCounter = new Counter();
System.out.println("before update:"+myCounter.count);
Updator myUpdator = new Updator();
myUpdator.update(myCounter);
System.out.println("after update:"+myCounter.count);
}
}
이전 예제와의 차이점은 update 메소드의 입력항목이다. 이전에는 int count 와 같이 값을 전달받았다면 지금은 Counter counter 와 같이 객체를 전달받도록 변경한 것이다.
update 메소드를 호출하는 부분도 다음처럼 바뀌었다.

 Summary
status | not read | | reprioritisations | |
---|
last reprioritisation on | | | suggested re-reading day | |
---|
started reading on | | | finished reading on | |
---|
Details