pt1调用构造方法后x=3,pt2调用构造方法后x=4,最后输出时,pt1.x是用对象pt1调用x的值,为什么pt1.x=3,此时x不是等于4吗

pt1调用构造方法后x=3,pt2调用构造方法后x=4,最后输出时,pt1.x是用对象pt1调用x的值,为什么pt1.x=3,此时x不是等于4吗

package com.imooc.person;


public class Test {

int x,y;

public Test(int x,int y) {

this.x=x;

this.y=y;

}

public static void main(String[] args) {

Test pt1=new Test(3,3);

Test pt2=new Test(4,4);

        System.out.println(pt1.x+pt2.x);

        }

}



相关截图:

https://img1.sycdn.imooc.com//climg/61c7ccb70926a36207610536.jpg




正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小小 2021-12-26 10:16:47

同学你好,解析如下:

Test pt1 = new Test(3, 3)表示创建名为pt1的Test类型的对象,创建对象时会调用双参的构造方法,并为pt1的x、y分别赋值为3、3。

Test pt2 = new Test(4, 4)表示创建名为pt2的Test类型的对象,创建对象时会调用双参的构造方法,并为pt2的x、y分别赋值为4、4。

故pt1.x=3,pt2.x=4,而pt1.x+pt2.x的结果为3+4故运行后的结果为7,运行结果效果图如下:

https://img1.sycdn.imooc.com//climg/61c7d00a0983eae006110370.jpg

祝学习愉快~

  • 提问者 慕婉清4152480 #1

    谢谢老师的解答。能用堆和栈的变化讲解下这题的对象创建及初始化和对象调用x和y的过程吗?,有图讲解的那种

    2021-12-26 10:54:56
  • 好帮手慕小小 回复 提问者 慕婉清4152480 #2

    同学你好,参考示例图如下:

    https://img1.sycdn.imooc.com//climg/61c7faee096059ab07990462.jpg

    祝学习愉快~

    2021-12-26 13:12:48
  • 为什么是申请了两个栈空间 分别指向了两个堆空间呢

    https://img1.sycdn.imooc.com//climg/62173eca09a9ceb916200860.jpg

    不应该是 类似上图吗    pt1 和pt2 是两个引用  同时指向一个堆地址吗

      为什么one two 这个是这样   这道题就不是了呢?

    2022-02-24 16:18:28
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师