黑马程序员技术交流社区

标题: 同名变量 [打印本页]

作者: laiminghui    时间: 2013-6-25 20:40
标题: 同名变量
本帖最后由 孙百鑫 于 2013-6-30 08:38 编辑

{:soso_e130:}
  1. /* ... ... 代码如下 ... ... */

  2. import acm.program.*;

  3. public class FactorialTable extends ConsoleProgram {

  4. public void run() {
  5. for(int i = 0; i <=NB ; i ++);
  6. println (i + " != " + Factorial ( i ) );
  7. }
  8. }

  9. private int Factorial( int n ) {
  10. int result = 1;
  11. for ( int i = 1 ; i<=n ; i ++);
  12. result *=1;
  13. }
  14. return result ;
  15. }

  16. private static final int NB = 4;
  17. }
复制代码
这里有同名变量 i  

在run()方法里面的 i     和   函数Factorial( int n ) 里的变量i   
它们这两个变量是不同的 没有任何联系的

理解上还是有点模糊   求更多的解答 和理解

作者: 王靖远    时间: 2013-6-25 20:53
这里的i是局部的,只在该方法内部有效。
作者: 万琪    时间: 2013-6-25 20:59
。。。这个。。很基础啊,,
变量的作用域,,
局部变量
就是距离变量最近方法,或者语句(if shitch while ....)的“{”,,到“}”的距离,,,好理解了吧

成员变量时,,
就是本类中,,,或者他的子类,,实力中,,

,,建议楼主还是系统学习下吧
,,光看视频可能不全面,,可以买本书,,

记得我以前买的《Java面向对象编程》还可以哈,,适合基础

作者: wangpan    时间: 2013-6-25 21:03
run方法里的i是一个局部变量,每循环一次把i作为实参传给Factorial( int n ) 的形参n,执行一次Factorial( int n ) 方法。

i=0:把0作为参数调用Factorial()方法。
      在Factorial(0)方法中,进入for循环,因为i=1,不满足i<=n的条件,所以result=1。程序输出1 != 1。
i=1:把1作为参数调用Factorial()方法。
      在Factorial(1)方法中,进入for循环,因为i=1,满足i<=n的条件,result=1*1;i++,i变成了2,判断i<=n,不满足条件,返回result=1。程序输出1 != 1。
i=2:把2作为参数调用Factorial()方法。
      在Factorial(2)方法中,进入for循环,因为i=1,满足i<=n的条件,result=1*1;i++,i变成了2,判断i<=n,满足条件,result=(1*1)*1;i++,i变成了3,判断i<n,不满足条件。返回result=1。程序输出1 != 1。
......
作者: 王广亚    时间: 2013-6-25 21:06
他们在栈内存中开辟了不同的空间

无标题.png (19.53 KB, 下载次数: 0)

无标题.png

作者: laiminghui    时间: 2013-6-25 22:46
王靖远 发表于 2013-6-25 20:53
这里的i是局部的,只在该方法内部有效。

:handshake
作者: laiminghui    时间: 2013-6-25 22:46
万琪 发表于 2013-6-25 20:59
。。。这个。。很基础啊,,
变量的作用域,,
局部变量

:handshake
作者: laiminghui    时间: 2013-6-25 22:46
wangpan 发表于 2013-6-25 21:03
run方法里的i是一个局部变量,每循环一次把i作为实参传给Factorial( int n ) 的形参n,执行一次Factorial(  ...

这个好  很好的理解了
作者: laiminghui    时间: 2013-6-25 22:47
王广亚 发表于 2013-6-25 21:06
他们在栈内存中开辟了不同的空间

:handshake
作者: majunm    时间: 2013-6-26 10:44
一个对象的成员变量 局部变量你可以想象成一个班级  【此时 班级是个对象】  【你和你同学都是方法】
======================================================================================================
                     此时             班里的黑板                             你的个人物品(你可以给它起个名字,叫黑板,话说想起什么就起什么)=====变量重名
                                      【 成员变量】                                          【局部变量】
                          班里的黑板老师可以用 你可以用            你的每个同学都是一个方法(函数),你也是,但是你的个人物品只能你自己用,即使它叫黑板
                          你同学也可以用!                                      别人也不能用!
                          this。黑板《调用成员变量》                       直接使用黑板《自己用自己的》
=====================================================================================================

1.png (35.41 KB, 下载次数: 0)

1.png

作者: 郭伟杰    时间: 2013-6-26 12:07
这个题有问题              
作者: 郭伟杰    时间: 2013-6-26 12:08
run方法应该是Runnable里面的啊
作者: majunm    时间: 2013-6-26 15:15
大哥 你懂了没有啊 给点分
作者: laiminghui    时间: 2013-6-26 21:06
majunm 发表于 2013-6-26 15:15
大哥 你懂了没有啊 给点分

早懂了   呵呵
作者: 280270738    时间: 2013-6-26 21:17
因为变量是被存储在栈内,用完了就消失了,这就是变量的作用域
作者: lkjghvcx@163.co    时间: 2013-6-27 10:17
局部变量,也是基础的内容,建议楼主好好地买本书看一下
作者: 孙百鑫    时间: 2013-6-30 08:38
楼主您好,帖子长时间没有动态我已经将您的帖子改成已解决。如有问题请私密我哦~




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