자바에서는 기본 타입 매개변수를 업데이트하는 메서드를 작성할 수 없다. 예를 들어 다음과 같이 double 값을 증가시키는 메서드는 의도한 대로 작동하지 않는다.
public void increaseRandomly(double x) { / / 의도한 대로 작동하지 않는다.
double amount = x * generator.nextDouble();
x += amount;
}
다음과 같이 호출한다고 하자.
boss.increaseRandomly(sales);
그러면 sales가 x로 복사된다. 다음으로 x를 증가시키지만 sales는 변하지 않는다. 이후 매개변수는 유효 범위를 벗어나고 증가 연산은 효력을 잃는다.
같은 이유로 객체 참조를 다른 것으로 바꾸는 메서드도 작성할 수 없다. 예를 들어 다음 메서드는 의도한 대로 작동하지 않는다.
public class EvilManager {
...
public void replaceWithZombie(Employee e) {
e = new Employee("", 0);
}
}