YYYEJI

[JAVA] Class Type인 변수 할당하기 본문

Java

[JAVA] Class Type인 변수 할당하기

YEJI ⍢ 2022. 12. 26. 23:38
728x90

코드를 살펴보면서 시작하도록 하겠습니다.

 

 

아래 코드의 결과가 왜 똑같이 나오는지 하나하나 살펴봅시다!


public static void main(String[] args) {
        p person_info_1 = new p();               
        p person_info_2 = new p();

        person_info_1.set("Jenie", 26);
        person_info_2.set("Jiso", 27);
	
	person_info_2 = person_info_1;
	
        person_info_2.set("Rosie", 25);
        System.out.println("< person_info_2 > ");
        person_info_2.writeOutput();

        System.out.println("\n< person_info_1 >");
        person_info_1.writeOutput();
}

 

우선 객체 두 개를 선언했고,

p person_info_1 = new p();               
p person_info_2 = new p();

두 객체는 서로 다른 주소를 가르키고 있습니다.

person_info_1.set("Jenie", 26);
person_info_2.set("Jiso", 27);

 

아래 코드는 person_info_1의 주소를 person_info_2에 할당하는 코드입니다.

person_info_2 = person_info_1;

주소를 할당하기 때문에 같은 주소를 가르키게 됩니다.

 

 

person_info_2의 instance 변수의 값을 다시 셋팅해주었고,

person_info_2.set("Rosie", 25);

 

 

person_info_1과 person_info_2의 값을 출력해보면

System.out.println("< person_info_2 > ");
person_info_2.writeOutput();

System.out.println("\n< person_info_1 >");
person_info_1.writeOutput();

같은 결과가 나오는 것을 확인할 수 있습니다.

 

 

그 이유는 person_info_2에 person_info_1의 주소를 할당해 주면서 두 객체가 하나의 주소를 가르키게 되고

값이 바뀐 후에도 같은 주소의 값을 출력하고 있기 때문에 같은 값이 나오게 되는 것입니다.

 

 

 

◡̈