A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hg3093483 中级黑马   /  2013-3-26 21:31  /  1617 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 hg3093483 于 2013-3-27 20:36 编辑

class ClassA
{
     public void method(int value)
     {
          System.out.println(value);
     }
     public void method()
     {
          System.out.println(value);
     }
     int value;
}
class TestClassA
{
      public static void main(String args[])
      {
           ClassA classA = new ClassA();
           classA.value = 10;
           classA.method();
           classA.method(20);
      }
}
这个结果输出的什么?请解释一下

点评

如果你的问题已经得到解决,请及时将主题改为[已解决],如果还有问题请继续追问,谢谢!  发表于 2013-3-27 11:13

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

3 个回复

倒序浏览
10   20


原因很简单

第一个  直接打印value

第二个  直接打印穿进去的value
回复 使用道具 举报
package test;

class ClassA
{
     public void method(int value)//这个value是一个局部变量。
     {
          System.out.println(value);//访问局部变量。
     }
     public void method()
     {
          System.out.println(value);//访问成员变量。
     }
     int value;//定义成员变量。
}
class TestClassA
{
      public static void main(String args[])
      {
           ClassA classA = new ClassA();
           classA.value = 10;//初始化成员变量value的值。
           classA.method();//这是调用无参构造方法。
           classA.method(20);//这是调用有参构造方法。
      }
}

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

回复 使用道具 举报
输出:10
         20
内存中的状态图如下:

value值在堆内存中初始化为value=10;method方法重载,第一个classA.method()调用第二个没有参数的方法,直接打印堆内存中的value值,即10;第二个classA.method(20)调用第一个有参数的方法,在栈内存中定义一个value并初始化传进来的整数值,value=20.然后执行打印语句,即20。

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马