>  Q&A  >  본문

java - 关于引用对象的问题

能不能详细解释下为什么最后y会随着x的变化而变化

Point x = new Point(0,0);
Point y = new Point(1,1);
x = y;
x.setLocation(5,5);
System.out.println("x is :"+x);
System.out.println("y is :"+y);

程序运行结果:

x is java.awt.Point[x=5, y=5]
y is java.awt.Point[x=5, y=5]
天蓬老师天蓬老师2743일 전409

모든 응답(3)나는 대답할 것이다

  • ringa_lee

    ringa_lee2017-04-18 10:56:28

    x 및 y 변수는 스택에 존재하며 힙의 두 개체인 new Point(0,0) 및 new Point(1,1)를 각각 가리킵니다. x = y를 실행하면 x는 힙에 대한 참조를 가리킵니다. y 메모리의 주소, x.setLocation(5,5)는 y를 직접 수정합니다. 마지막으로 x와 y는 모두 힙의 y를 가리키므로 x x=5, y=5<🎜의 수정된 내용이 인쇄됩니다. >

    회신하다
    0
  • 阿神

    阿神2017-04-18 10:56:28

    Google은 값으로 전달하고 참조로 전달합니다

    생각하는 질문: 최종 결과물은 무엇인가요?

    으아악 으아악

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-18 10:56:28

    즉, 당신이 인용한 것은 y의 공간 주소뿐입니다

    회신하다
    0
  • 취소회신하다