黑马程序员技术交流社区

标题: 关于两个变量 [打印本页]

作者: 唐兴旺    时间: 2012-2-29 23:48
标题: 关于两个变量

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”都是成员变量,他们不是同一个变量吗?
作者: 李晓俊老师    时间: 2012-2-29 23:52
首先主函数里面的i是局部变量,不是成员变量,,定义在方法内部以及方法括号里面的都是局部变量
这样说你懂了吧
作者: H07000223    时间: 2012-3-1 00:24
首先两者的位置不同:一个定义在类中,一个定义在方法中。

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

第二个输出结果就不用说了。至于第一个,你可以当做就近原则来理解。
作者: 倪鹏博    时间: 2012-3-1 16:16
对于我们定义的任何变量,每一个都有其适用的范围!
main方法中的变量 i 只适用于main方法中,出了main方法的范围就不是原来的变量 i 了;
同样类Hello中的变量 i 也只适用类Hello中。
就好比上海有个叫王二的,北京也有个叫王二的!虽然他两名字一样,但是却不是同一个人一个意思!

作者: 张亮    时间: 2012-3-1 16:46
说说我的理解。类中的 i 是成员变量,main方法中的 i 是局部变量,作用范围不同。只是名字相同而已。
作者: 泮和顺    时间: 2012-3-1 18:03
main()方法只是测试用的而已 写在类内和类外根本就是一样的 其里面定义的不会是类的成员变量。
作者: 吕婷    时间: 2012-3-1 20:43
今天刚看完这节内容,我最直观理解就是,可以把HELLO中打印的那个i 理解为this.i,P调用了就代表是P.i,因为p.i=20,所以打印出来的是20.




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2