Call By Value
- 인자로 받은 값을 복사하여 처리하는 방식
- Call By Value에 의해 넘어온 값을 증가 시켜도 원래의 값이 보존됨
- 값을 복사하여 넘기기 때문에 메모리 사용량이 늘어남
Call By Reference
- 인자로 받은 값의 주소를 참조하여 직접 값에 영향을 주는 방식
- 값을 복사하지 않고 직접 참조하기 때문에 속도가 빠름
- 원래의 값에 영향을 주는 리스크가 존재함
public class Main {
public static void main(String[] args) {
Foo f = new Foo("f");
System.out.println(f.string);
changeReference(f);
modifyReference(f);
System.out.println(f.string);
}
public static void changeReference(Foo a) {
Foo b = new Foo("b");
System.out.println(b.string);
a = b;
System.out.println(a.string);
}
public static void modifyReference(Foo c) {
c.setAttribute("c");
System.out.println(c.string);
}
}
![](https://velog.velcdn.com/images/jwjley/post/75377c11-ac73-4f83-aace-fd7df4434a45/image.png)