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); // It won't change the reference!
modifyReference(f); // It will modify the object that the reference variable "f" refers to!
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);
}
}
// f
// b
// b
// c
// c
'Programming Language > JAVA' 카테고리의 다른 글
[JAVA] BigInteger (0) | 2023.10.09 |
---|---|
[JAVA] List & Set &Map (0) | 2023.08.15 |
[JAVA] 지역 변수 & 전역 변수 & static(정적) 변수 (0) | 2023.08.15 |
[JAVA] 인터페이스(interface) (0) | 2023.08.12 |
[JAVA] 가비지 컬렉션(Garbage Collection) (0) | 2023.08.01 |