CODE 1는정수형 변수의 경우 '='연산자가 값 또는 참조와 동일합니까?
Car car1 = new Car();
Car car2 = new Car();
car2.setColor("Green");
car2.setModel("I20");
car1 = car2;
System.out.println(car1.getColor() + " , " + car1.getModel());
System.out.println(car2.getColor() + " , " + car2.getModel());
car1.setColor("Red");
car1.setModel("I10");
System.out.println(car1.getColor() + " , " + car1.getModel());
System.out.println(car2.getColor() + " , " + car2.getModel());
출력 : 여기 car1 = car2;
Green , I20
Green , I20
Red , I10
Red , I10
따라서 car1
을 더 변화가 car2
객체로 변화와 동등한 car1
객체 car2
오브젝트를 참조 할 둘 다 같은 값을 참조합니다.
CODE 2는
Integer c = 5;
Integer d = 10;
System.out.println(c + ", " + d);
c = d;
System.out.println(c + ", " + d);
c = 7;
System.out.println(c + ", " + d);
출력 : c
의 값을 변경하는 이유 역시 후 c = d;
모두 c
및 d
가 같은 값을 참조 여기
5, 10
10, 10
7, 10
변화하지 않는다 d
값?
'='변수가 아니라 객체를 수정합니다. – user2357112
변수의 값을 변경하는 것은 객체의 상태를 변경하는 것과 매우 다릅니다. 우편 주소를 변경하면 이전 주소로 집을 수정할 수 없으며 아직 거주중인 다른 사람들의 주소도 변경되지 않습니다. – azurefrog
@ 필자는 이유가 더 많이 '정수'변수가 참조라고 생각한다. - c = d; c = 7;'d'를'Foo d = new Foo (42) 이상 수정하지 않습니다; 푸 (Foo) c = d; c = new Foo (69);가 있습니다. –