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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© laiminghui 高级黑马   /  2013-6-25 20:40  /  2646 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 孙百鑫 于 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   
它们这两个变量是不同的 没有任何联系的

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

评分

参与人数 1技术分 +1 收起 理由
孙百鑫 + 1 神马都是浮云

查看全部评分

16 个回复

倒序浏览

回帖奖励 +5

这里的i是局部的,只在该方法内部有效。
回复 使用道具 举报
。。。这个。。很基础啊,,
变量的作用域,,
局部变量
就是距离变量最近方法,或者语句(if shitch while ....)的“{”,,到“}”的距离,,,好理解了吧

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

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

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

评分

参与人数 1技术分 +1 收起 理由
孙百鑫 + 1 很给力!

查看全部评分

回复 使用道具 举报
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。
......

评分

参与人数 1技术分 +1 收起 理由
孙百鑫 + 1 赞一个!

查看全部评分

回复 使用道具 举报
他们在栈内存中开辟了不同的空间

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

无标题.png
回复 使用道具 举报
王靖远 发表于 2013-6-25 20:53
这里的i是局部的,只在该方法内部有效。

:handshake
回复 使用道具 举报
万琪 发表于 2013-6-25 20:59
。。。这个。。很基础啊,,
变量的作用域,,
局部变量

:handshake
回复 使用道具 举报
wangpan 发表于 2013-6-25 21:03
run方法里的i是一个局部变量,每循环一次把i作为实参传给Factorial( int n ) 的形参n,执行一次Factorial(  ...

这个好  很好的理解了
回复 使用道具 举报
王广亚 发表于 2013-6-25 21:06
他们在栈内存中开辟了不同的空间

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

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

1.png

评分

参与人数 2技术分 +1 黑马币 +3 收起 理由
郑先明 + 3 例子举的不错 学习了!
孙百鑫 + 1 赞一个!

查看全部评分

回复 使用道具 举报
这个题有问题              
回复 使用道具 举报
run方法应该是Runnable里面的啊
回复 使用道具 举报
大哥 你懂了没有啊 给点分
回复 使用道具 举报
majunm 发表于 2013-6-26 15:15
大哥 你懂了没有啊 给点分

早懂了   呵呵
回复 使用道具 举报
因为变量是被存储在栈内,用完了就消失了,这就是变量的作用域
回复 使用道具 举报
局部变量,也是基础的内容,建议楼主好好地买本书看一下
回复 使用道具 举报
楼主您好,帖子长时间没有动态我已经将您的帖子改成已解决。如有问题请私密我哦~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马