Call By Value

  • 기본 자료형 변수를 복사하는 경우 Call By Value에 의해 값이 복사되어
    서로에게 영향을 주지 않음
  • 값 자체를 단순히 복사
// Call By Value ex)
public class CallByValue {
    public static void main(String [] args) {
        int a = 10;
        int b = a; // call by value

        b = 20; // 값을 변경해도 변수 a에 영향x
    }
}

image

Call By Reference(Address)

  • Call By Value와 본질적인 차이는 없지만 저장하고 있는 값을 주소로
    해석해서 주소를 복사
  • 주소값을 복사
// Call By Reference ex)
class Animal {
	public int age;
}

public class CallByReference {
	public static void main(String[] args) {
		Animal ref_a = new Animal();
		Animal ref_b = ref_a; // call by reference

		/* 값을 변경시 같은 객체를 참조하고 있기에 
                서로 변수에 영향을 미친다. */
		ref_a.age = 10; 
		ref_b.age = 20;
		
		System.out.println(ref_a.age); // 20
		System.out.println(ref_b.age); // 20
	}
}

image

Leave a comment