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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 唐兴旺 中级黑马   /  2012-2-29 23:48  /  1978 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


public class Hello {
   int i=20;
   public void pt()
    {
         System.out.println(i);
    }
   public static void main(String[] args)
{
   int i=10;
   System.out.println(i);
   Hello P=new Hello();
   P.pt();
  }
}
输出10,20
主函数的“i”和class里面的“i”都是成员变量,他们不是同一个变量吗?

6 个回复

倒序浏览
首先主函数里面的i是局部变量,不是成员变量,,定义在方法内部以及方法括号里面的都是局部变量
这样说你懂了吧
回复 使用道具 举报
首先两者的位置不同:一个定义在类中,一个定义在方法中。

可以肯定地说,他们不是同一个变量,只是名字一样而已。正因为名字导致了输出结果。

第二个输出结果就不用说了。至于第一个,你可以当做就近原则来理解。
回复 使用道具 举报
对于我们定义的任何变量,每一个都有其适用的范围!
main方法中的变量 i 只适用于main方法中,出了main方法的范围就不是原来的变量 i 了;
同样类Hello中的变量 i 也只适用类Hello中。
就好比上海有个叫王二的,北京也有个叫王二的!虽然他两名字一样,但是却不是同一个人一个意思!

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
说说我的理解。类中的 i 是成员变量,main方法中的 i 是局部变量,作用范围不同。只是名字相同而已。
回复 使用道具 举报
main()方法只是测试用的而已 写在类内和类外根本就是一样的 其里面定义的不会是类的成员变量。
回复 使用道具 举报
今天刚看完这节内容,我最直观理解就是,可以把HELLO中打印的那个i 理解为this.i,P调用了就代表是P.i,因为p.i=20,所以打印出来的是20.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马