리셋 되지 말자

참조 변수의 복사 본문

Java(폐지)/Java 공부

참조 변수의 복사

kyeongjun-dev 2020. 7. 20. 10:39
package reference;

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

        ref_a.age = 10;
        ref_b.age = 20;

        System.out.println(ref_a.age); // 20
        System.out.println(ref_b.age); // 20
    }
}

class Animal {
    public int age;
}
  • 결과
20
20
  • T메모리

패키지 표현 생략

  • ref_a와 ref_b가 가지는 값은 :Animal의 주솟값이다.
  • Call by value와 Call by reference의 차이는 변수가 가지고 있는 값을 '값 자체'로 해석하느냐, '주소값'으로 해석하느냐의 차이다.
package reference;

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

        ref_a.age = 10;
        ref_b.age = 20;

        System.out.println(ref_a.age); // 20
        System.out.println(ref_b.age); // 20

        System.out.println(ref_a);
        System.out.println(ref_b);

    }
}

class Animal {
    public int age;
}

  • 기본 자료형 변수는 저장하고 있는 값을 그 값 자체로 판단하고, 참조 변수는 저정하고 있는 값을 주소로 판단한다.
    -> 기본 자료형 변수는 값을 값 자체로 판단한다.
    -> 참조 자료형 변수는 값을 주소, 즉 포인터로 판단한다.
    -> 기본 자료형 변수를 복사할 때, 참조 자료형 변수를 복사할 때 일어나는 일은 같다.
    즉, 가지고 있는 값을 그대로 복사해서 넘겨 준다.

'Java(폐지) > Java 공부' 카테고리의 다른 글

생성자(constructor)  (0) 2020.07.20
abstract 키워드 - 추상 메서드와 추상 클래스  (0) 2020.07.20
다형성: 사용편의성  (0) 2020.07.17
상속과 T 메모리  (0) 2020.07.16
상속과 인터페이스  (0) 2020.07.16
Comments