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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 侯凯斌 中级黑马   /  2012-11-15 11:33  /  1434 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Example{
    int x = 12;
    public void method(int x){
        x += x;
        System.out.println(x);
    }
    public static void main(String[] args){
        Example t = new Example();
        t.method(5);
    }
}

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

7 个回复

倒序浏览
我觉得应该是10,
    public void method(int x){
        x += x;
        System.out.println(x);
    }
这段语句中,x一直都是局部变量,没有用到this.x
所以你调用method方法的时候,和类的成员变量x没有关系。

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 邵天强 于 2012-11-15 12:01 编辑

运行结果:10
详细分析:
Example t=new Example();//你首先创建了一个Example对象,
然后t.method(5)调用了method方法,而在Example中有一个成员变量x=12,有局部变量x
,通过Debug很容易理解

往下调试:

你可以试一下,一般对结果不明白的可以通过调试,很容易明白怎样运行的

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 辛苦了 。

查看全部评分

回复 使用道具 举报
答案就是10,在主函数中调用的是method()方法传过去的X的值,与方法外X的值无关。
回复 使用道具 举报
  1. /**
  2. *
  3. */
  4. package com.itheima.javaoop.polymorphism;

  5. /**
  6. * @author Administrator
  7. *
  8. */
  9. public class Test {
  10.         /*
  11.          * 采取就近原则 ,函数中有的就先用函数里面声明的局部变量 ,如果没有则使用类成员变量 。
  12.          */
  13.         int x = 12;

  14.         public void method(/* int x */) {
  15.                 x += x;
  16.                 System.out.println(x);
  17.         }

  18.         public static void main(String[] args) {
  19.                 Test t = new Test();
  20. //                t.method(5);
  21.                 t.method(); // 结果为24
  22.         }
  23. }
复制代码
回复 使用道具 举报
结果:10
x+=x;//用的全是局部的x
回复 使用道具 举报
吴愿涛 发表于 2012-11-15 12:03

感谢老师这么细心为我分析啊,太感谢了:#
回复 使用道具 举报
.......度娘都能帮你解决
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马