java吧 关注:1,253,283贴子:12,739,688
  • 13回复贴,共1

求大神。。。

只看楼主收藏回复

😒以下代码求输出的值,并解答其缘由。。


IP属地:浙江来自Android客户端1楼2017-08-16 22:18回复


    IP属地:浙江来自Android客户端2楼2017-08-16 22:19
    回复


      IP属地:浙江来自Android客户端3楼2017-08-16 22:20
      回复
        第一个输出0
        因为子类构造方法会调用父类构造方法.父类构造方法里会调用method.method方法被覆盖了所以调用了子类里的method,子类里的method输出成员域i.成员域是没有覆盖的,所以输出的是子类里的成员域i,但是那个时候还没初始化子类,所以是0
        第二个a.append(b),所以a是"ab",然后b=a;这行代码只改变了append方法内部的b引用的指向,并没有改变main里面引用b的指向.


        IP属地:云南5楼2017-08-16 22:32
        回复
          我新手 javase还没学完
          第一题的话 应该是100 创建子类对象时会走父类构造函数初始化数值 相同成员属性是隐藏 通过super调用 相同成员方法是重写(覆盖),通过对象调用各自对象方法 所以它走父类构造函数时调用父类method方法输出父类成员属性100
          第二题中main和method中都是两个变量指向同一个地址 所以第一行a.append直接改变缓冲区内的数据 main中a的数据就变了
          而b是改变了它的地址 不影响另一个b的地址。
          话说你都11级了还水贴吗
          如果我哪里错了大家纠正我啊我好改正谢谢


          IP属地:江苏来自Android客户端7楼2017-08-17 02:59
          收起回复
            有着发帖的时间还不如看书呢
            建议专门找一个人问


            12楼2017-08-17 09:29
            收起回复
              镇楼图好可爱 抱走了


              来自iPhone客户端13楼2017-08-17 11:58
              收起回复